搜索
您的当前位置:首页正文

Nginx服务器内部重定向

来源:二三娱乐

Java web编程中经常涉及到重定向的问题,servlet实现了两种重定向的方式:服务器内部重定向(也叫forward,请求转发),和客户端重定向(redirect)。

大多数的web应用服务器都会在前端加上一个nginx作为反向代理层,目地为了安全或者负载均衡,nginx对于静态文件的处理能力比较高效,往往会有这种需求:由web应用服务器做动态的下载权限的验证,然后把下载的事情交给nginx去做,同时又不想直接把文件地址暴露给用户,于是必须使用到nginx服务端重定向的技术。回想一下nginx本身做反向代理的能力,设置一个proxy_pass,本身就起到了隐藏背后url的功能,只不过是写死在配置文件中的,这里的需求是一个下载请求过来以后,web应用服务器处理完验证逻辑后才代理到其他的url,所以这个代理的请求必须由web应用服务器自己来发。

server{
       listen 80;
       server_name localhost;
       location /protect {
          proxy_pass 
          internal;
       }
      location / {
         proxy_pass http://127.0.0.1:8089/;
      }
}
response.addHeader("X-Accel-Redirect", "/protect")
Top