【发布时间】:2016-06-24 09:20:23
【问题描述】:
我有一个我无法解决的问题,我希望我能得到一些提示来完成这项工作。我有多个后端,我想允许通过反向代理进行访问。我可以使用 NGinX 中的多个域轻松做到这一点,如下所示:
server {
listen 80;
server_name repo.test.local;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.16.1.32;
break;
}
}
server {
listen 80;
server_name maprwebui.test.local;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://172.16.1.104:8443;
break;
}
}
server {
listen 80;
server_name spark.test.local;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.16.1.102:8080;
break;
}
}
server {
listen 80;
server_name yarnhistory.test.local;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.16.1.202:19888;
break;
}
}
但我希望能够像这样使用子 URI 来做到这一点:
server {
listen 80;
server_name proxy.test.local;
location /repo {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.16.1.32;
}
location /maprui {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://172.16.1.104:8443;
}
location /spark {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.16.1.102:8080;
}
location /yarn {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.16.1.202:19888;
}
}
我已经尝试了所有我能想到的方法来让这个设置正常工作,但我最终在这些 URI 下得到了 404 的 URI,或者 NginX 应用程序认为它没有尝试点击 http://proxy.test.com/yarn/jobhistory 之类的东西,而是重新路由到 @ 987654322@
我已尝试重写规则以查看它们是否有效,但它们也无效,或者我做错了。我已经测试了以下内容,但无法修复:
rewrite ^/yarn/(.*) /$1 break;
proxy_pass http://172.16.1.202:19888;
有没有办法让它工作,而不必接触你想要公开的后端服务,或者不用做我正在做的事情,有多个域?
提前感谢您的帮助。
【问题讨论】:
-
嗨乔希,感谢您的提问。在代理服务器上,由于我使用 Uri 纱线来破译我要代理的后端,我希望前端看起来像这样:proxy.test.local/yarn/jobhistory 后端虽然没有纱线,但它会是 @987654326 @我希望这能消除任何困惑。
标签: nginx proxy location uri reverse