一般我们通过location /拦截请求,通过proxy_pass反向代理转发到指定URL
如果test后不带/ 表示会拦截 如:/test /test01 /testxxxxx 这一类请求,只要是以test开头的请求都会被拦截
location /test{
rewrite ^.+/test/?(.*)$ /$1 break;
include uwsgi_params;
proxy_pass http://127.0.0.1:8080;
}
如果test后带/ 表示只会拦截/test 或者/test/xxxx等相关请求
location /test/{
rewrite ^.+/test/?(.*)$ /$1 break;
include uwsgi_params;
proxy_pass http://127.0.0.1:8080;
}
proxy_pass 后面的url带/ 和 不带/ 区别
如果URL后不带/ ,输入www.xuxu4.com/test 相当于被代理到 www.xuxu4.com/test/
location /test{
rewrite ^.+/test/?(.*)$ /$1 break;
include uwsgi_params;
proxy_pass http://127.0.0.1:8080;
}
如果URL后带/ ,输入www.xuxu4.com/test 相当于被代理到 www.xuxu4.com/ 请求时候得带上test才能被拦截
location /test{
rewrite ^.+/test/?(.*)$ /$1 break;
include uwsgi_params;
proxy_pass http://127.0.0.1:8080/;
}
nginx代理造成session的id每次都不一致的问题
如果访问路径与nginx代理的实际路径不一致的话,会丢弃从浏览器中带过来的cookie,例:
实际路径
http://192.168.1.1:8080/api
访问路径
http://127.0.0.1:8090/baidu/api
每次session的id都不一致 需要在nginx配置中加上下面配置:
#路径改变需要添加cookie代理配置
proxy_cookie_path /api /baidu/api;