Назад | Перейти на главную страницу

Nginx, proxy_pass, измененные относительные ссылки вверх по течению

У меня проблема с nginx proxy_pass, и я изучал документацию HttpProxyModule в вики nginx, но не могу понять.

У меня есть супервайзер (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, Я получаю страницу статуса супервизора. Но когда я нажимаю ссылку «обновить» (на странице, а не в браузере) или запускаю / останавливаю процесс, меня отправляют обратно на страницу вроде http://mydomain/?message=Process app started, который просто переносит меня на экран-заставку nginx вместо страницы супервизора. Я дважды проверил источник html на странице, и он дает мне относительные ссылки. Так что, похоже, что-то в моей конфигурации удаляет / supervisor /, я просто не уверен, что.

Спасибо,

Я смог сделать это, добавив это в свой файл конфигурации 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;
  }

Похоже, супервизор не работает при запуске в подпутье.

Настройте Nginx с супервизором, доступным на поддомене, например: http://supervisor.yourdomain.com/