nginx反向代理location路径设置

nginx反向代理路径的配置规则,路径最后有/和没/的区别。

一. location匹配路径末尾没有 /

此时proxy_pass后面的路径必须和location设置的路径一致:

1
2
3
4
5
6
7
8
location /index
{
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/index;
}

外面访问:http://romotehost/index/index.html
相当于访问:http://localhost:8080/index/index.html

二. location匹配路径末尾有 /

此时proxy_pass后面的路径需要分为以下四种情况讨论:

  • proxy_pass后面的路径只有域名且最后没有 /:
    1
    2
    3
    4
    5
    6
    7
    8
    location /index/
    {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:8080;
    }

外面访问:http://romotehost/index/index.html
相当于访问:http://localhost:8080/index/index.html

  • proxy_pass后面的路径只有域名同时最后有 /:

    1
    2
    3
    4
    5
    6
    7
    8
    location /index/
    {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:8080/;
    }

    外面访问:http://romotehost/index/index.html
    相当于访问:http://localhost:8080/index.html

  • proxy_pass后面的路径还有其他路径但是最后没有 /:

    1
    2
    3
    4
    5
    6
    7
    8
    location /index/
    {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:8080/test;
    }

外面访问:http://romotehost/index/index.html
相当于访问:http://localhost:8080/testindex.html

  • proxy_pass后面的路径还有其他路径同时最后有 /:
    1
    2
    3
    4
    5
    6
    7
    8
    location /index/
    {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:8080/test/;
    }

外面访问:http://romotehost/index/index.html
相当于访问:http://localhost:8080/index/index.html

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

小小鼓励一下~

支付宝
微信