nginx配置proxy_pass时url末尾带“/”与不带“/”的区别如下
总结
proxy_pass 末尾 为 http://ip:80 之后什么都没有(没有/ 没有路径)
这个时候就是 全移动
否则是 替换
proxy_pass配置中url末尾带/时,
nginx转发时,会将原uri去除location匹配表达式后的内容拼接在proxy_pass中url之后。
测试地址:http://192.168.171.129/aaa/bbb.jsp
场景一:
location ^~ /aaa/ {
proxy_pass http://192.168.171.129:8080/server/;
}
代理后实际访问地址:http://192.168.171.129:8080/server/bbb.jsp
场景二:
location ^~ /aaa {
proxy_pass http://192.168.171.129:8080/server/;
}
代理后实际访问地址:http://192.168.171.129:8080/server//bbb.jsp
场景三:
location ^~ /aaa/ {
proxy_pass http://192.168.171.129:8080/;
}
代理后实际访问地址:http://192.168.171.129:8080/bbb.jsp
场景四:
location ^~ /aaa {
proxy_pass http://192.168.171.129:8080/;
}
代理后实际访问地址:http://192.168.171.129:8080//bbb.jsp
proxy_pass配置中url末尾不带/时,
如url中包含path,则将原uri去除location匹配表达式后的内容拼接在proxy_pass中的url之后
如url中不包含path,则直接将原uri拼接在proxy_pass中url之后;
测试地址:http://192.168.171.129/aaa/bbb.jsp
场景一:
location ^~ /aaa/{
proxy_pass http://192.168.171.129:8080/server;
}
代理后实际访问地址:http://192.168.171.129:8080/serverbbb.jsp
场景二:
location ^~ /aaa {
proxy_pass http://192.168.171.129:8080/server;
}
代理后实际访问地址:http://192.168.171.129:8080/server/bbb.jsp
----------------全转发-----------------------------------------------------------------------------
场景三:
location ^~ /aaa/ {
proxy_pass http://192.168.171.129:8080;
}
代理后实际访问地址:http://192.168.171.129:8080/aaa/bbb.jsp
场景四:
location ^~ /aaa {
proxy_pass http://192.168.171.129:8080;
}
代理后实际访问地址:http://192.168.171.129:8080/aaa/bbb.jsp
server {
listen 8899;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Max-Age 3600;
add_header Access-Control-Allow-Credentials false;
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Headers
$http_access_control_request_headers;
if ($request_method = OPTIONS){
return 200;
}
location / {
proxy_pass http://192.168.0.132:8899;
}
location /tian/ {
proxy_pass https://t7.tianditu.gov.cn/;
proxy_set_header referer http://localhost:8080/;
proxy_set_header user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36";
proxy_redirect default;
proxy_connect_timeout 1s;
proxy_read_timeout 30s;
proxy_send_timeout 1s;
# add_header 'Access-Control-Allow-Headers' 'Content-Type';
add_header 'Access-Control-Allow-Origin' '*';
# add_header 'Access-Control-Allow-Methods' 'GET';
}
}