参考网网文:https://www.cnblogs.com/xiaoliangup/p/9175932.html
这里主要记录一下遇到的坑:
1、root 、alias指令区别
location /img/ { alias /var/www/image/; }
#若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件
location /img/ { root /var/www/image; }
#若按照这种配置的话,则访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下找文件。]
alias是一个目录别名的定义,root则是最上层目录的定义。
还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~
2、location结尾有/和没有
没有“/”时,location /abc/def可以匹配/abc/defghi请求,也可以匹配/abc/def/ghi等
而有“/”时,location /abc/def/不能匹配/abc/defghi请求,也不能请求/abc/def,只能匹配/abc/def/anything这样的请求
3、nginx、tomcat、外网 三个不同端口,出现302重定向问题(外网访问首页可以,跳转登录,端口自动转成内网的nginx端口导致失败)
3.1使用absolute_redirect属性,重定向是是否添加域名(包含端口),默认为on,设置为off,
location /anyquery {
proxy_pass http://192.168.2.41:8008;
absolute_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
}
3.2使用proxy_set_header属性,这里不好的一点是必须配置外网端口,如果用$server_port取的是nginx的
location /anyquery {
proxy_pass http://192.168.2.41:8008;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header Host $host:8002;
}
3.3使用proxy_redirect属性,这里把返回给客户端的地址和端口强制变为外网的地址和端口,我实操的时候,proxy_pass得直接写地址,不能用负载,还是对机制了解不够
location /anyquery {
proxy_pass http://192.168.2.41:8008;
proxy_redirect http://192.168.2.41:8008/ http://外网ip:8002/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
原文:https://www.cnblogs.com/aishangyizhihu/p/12580948.html