Nginx位置匹配仅在匹配根时才起作用

前端之家收集整理的这篇文章主要介绍了Nginx位置匹配仅在匹配根时才起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试配置Nginx,所以我可以有两个位置.一个用于我的节点API,另一个用于我的Jenkins CI.

http:// my_ip / api应指向我的节点服务器,http:// my_ip / jenkins应该指向我的jenkins CI

我有这个服务器块.

server {
listen 80;

server_name my_ip_address;

location /api {
    proxy_pass http://127.0.0.1:1234;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

location /jenkins {

   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_set_header        X-Forwarded-Proto $scheme;

   proxy_pass          http://localhost:8080;
   proxy_read_timeout  90;

}
}

那个配置不起作用.但是,如果我使用与root匹配的任何位置,它就可以工作.

这没有问题.如果我将节点api的位置块与/仅使用相同的话.

location / {

   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_set_header        X-Forwarded-Proto $scheme;

   proxy_pass          http://localhost:8080;
   proxy_read_timeout  90;

}

但如果我改变/ / jenkins,它就不再起作用了.

我知道我在这里缺少一些基本的知识,但我无法弄清楚这一点,因为我看起来似乎表明应该工作正常.

好吧,经过对该主题的更多研究后,我注意到该设置的问题是位置/ api没有连接到http://127.0.0.1:1234/它试图连接到http://127.0 .0.1:1234 / api和jenkins一样.

因此,解决方案是向位置和proxy_pass添加尾部斜杠.

location /api/ {
    proxy_pass http://127.0.0.1:1234/;
....

location /jenkins/ {
   proxy_pass          http://localhost:8080/;
   proxy_read_timeout  90;

....

这就是诀窍.

原文链接:https://www.f2er.com/nginx/435109.html

猜你在找的Nginx相关文章