我正在尝试在nginx中实现以下目标:
点击http://<nginx-host>:81/admin/metrics
上的nginx,并将http://127.0.0.1:8001
重写的/admin/metrics
nginx代理到/metrics
。实际代理的管理员应用会收到http://127.0.0.1:8001/metrics
。
所以,http://<nginx-host>:81/admin/metrics
=&gt; http://127.0.0.1:8001/metrics
和没有导致redirect
。
这是我到目前为止所做的:
#admin app
upstream admin_backend {
server 127.0.0.1:8001;
keepalive 16;
}
#host /admin paths on another port
server {
listen 81;
#pass everything to backend admin app that matches /admin/* with /admin/ removed
location ~ /admin/ {
limit_except GET HEAD POST PUT { }
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_pass http://admin_backend;
rewrite ^/admin/(.*)$ /$1 last;
}
}
这不起作用。 nginx未将请求代理回admin
应用并继续返回404
。
我在这里缺少什么?
答案 0 :(得分:0)
我在nginx users forum上交叉发布了这个问题,并从nanaya
得到了解决方案(谢谢!)。
基本上,我需要做的就是用last
指令中的break
替换rewrite
:
所以,
rewrite ^/admin/(.*)$ /$1 last;
成了
rewrite ^/admin/(.*)$ /$1 break;
答案 1 :(得分:0)
location ~ /api/ {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://server:8009;
rewrite ^/api/(.*)$ /$1 break;
}