lim*_*gni 7 nginx reverse-proxy
我正在尝试配置 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;
}
}
Run Code Online (Sandbox Code Playgroud)
该配置不起作用。但是,如果我使用与 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;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我更改/
到/jenkins
它不工作了。
我知道我在这里遗漏了一些基本的知识,但我无法弄清楚这一点,因为我所看到的任何地方似乎都表明应该可以正常工作。
lim*_*gni 11
好吧,在对该主题进行了更多研究之后,我注意到该设置的问题在于位置 /api 没有连接到http://127.0.0.1:1234/
它正在尝试连接到http://127.0.0.1:1234/api
jenkins。
因此,解决方案是在 location 和 proxy_pass 中添加尾部斜杠。
location /api/ {
proxy_pass http://127.0.0.1:1234/;
....
location /jenkins/ {
proxy_pass http://localhost:8080/;
proxy_read_timeout 90;
....
Run Code Online (Sandbox Code Playgroud)
所以这就是诀窍。
归档时间: |
|
查看次数: |
4548 次 |
最近记录: |