今天在做nginx反向代理的时候,出现了一个问题:我们外网访问端口设置的是8088,但是因为外网访问默认端口是80,所以当页面发生重定向的时候,会出现页面访问不到的问题,、
尝试很多办法之后,终于得到了解决,特意分享出来,希望可以帮到有需要的朋友。
server {
listen 内网端口;
server_name 域名a;
if ( $content_type ~ xwork2 ){
return 403;
}
if ( $content_type ~ struts2 ){
return 403;
}
client_header_buffer_size 100m;
client_max_body_size 500m;
client_body_buffer_size 100m;
location / {
index index.jsp index.do index.html index.htm;
proxy_pass 访问的内网地址;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
#set_real_ip_from 0.0.0.0/24;
#real_ip_header X-Real-IP;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
proxy_redirect a
a:8088;
}
location /web-console/ {}
location /jmx-console/ {}
location /invoker/ {}
}
这里需要配置一下proxy_redirect,当上游服务器返回的响应是重定向或刷新请求(如HTTP响应码是301或者302)时,proxy_redirect可以重设HTTP头部的location或refresh字段
更多资料可以参考:http://blog.51cto.com/blief/1739178