Nginx,proxy_pass,上游相对链接混乱

Nginx,proxy_pass,上游相对链接混乱

我在使用 nginx proxy_pass 时遇到了问题,并仔细研究了 nginx wiki 上的 HttpProxyModule 文档,但还是无法解决问题。

我有主管(http://supervisord.org/) 在本地主机(127.0.0.1:9001)上运行,并且 nginx 将所有流量从端口 80 重定向到 443。我希望当我转到时能够进入主管状态页面https://mydomain/supervisor

我的 nginx.conf 文件的相关部分如下所示 -

server {
  listen 80;
  server_name mydomain;
  return 301 https://$host$request_uri;
} 

server {
 listen 443;
 server_name mydomain;
 # .. bunch of ssl stuff

 location /supervisor/ {
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:9001/;
    }
}

这很好用,当我转到时https://mydomain/supervisor,我得到了supervisord状态网页。但是当我点击“刷新”链接(在页面上,而不是浏览器刷新)或启动/停止进程时,我就会被送回一个页面,就像这样http://mydomain/?message=Process app started,它只会带我到nginx启动画面而不是supervisor页面。我仔细检查了页面上的html源代码,它给了我相对链接。所以似乎是我的配置中的一些东西删除了/supervisor/,我只是不确定是什么。

谢谢,

答案1

看起来,在子路径中运行时,主管不能正常工作。

设置 Nginx 并在子域上可以访问主管,例如:http://supervisor.yourdomain.com/

答案2

我可以通过将以下内容添加到我的 nginx 配置文件中来实现这一点:

upstream supervisor { 
  server 127.0.0.1:9001 fail_timeout=0; 
}

server {

  # server configuration

  location /supervisor {
    return 301 $uri/index.html;
  }

  location /supervisor/ {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # hack the host https://github.com/Supervisor/supervisor/issues/251
    proxy_set_header Host $http_host/supervisor/index.html;
    proxy_redirect off;
    rewrite ^/supervisor(.*)$ /$1 break;
    proxy_pass http://supervisor;
  }

相关内容