Конфигурация супервизора Nginx

У меня supervisord сервер работает на localhost:9001. Я пытаюсь обслужить его в localhost/supervisord.

Конфигурация nginx выглядит так:

worker_processes 1;
error_log /var/log/nginx/error.log;
pid /tmp/nginx.pid;
#daemon off;

events {
  worker_connections 1024;
}

http {
    # MIME / Charset
    default_type application/octet-stream;
    charset utf-8;

    # Logging
    access_log /var/log/nginx/access.log;

    # Other params
    server_tokens off;
    tcp_nopush on;
    tcp_nodelay off;
    sendfile on;

    upstream supervisord {
        server localhost:9001;
    }

    server {
        listen 80;
          client_max_body_size 4G;
          keepalive_timeout 5;

        location ^~ /stylesheets {
          alias  /Users/ocervell/.virtualenvs/ndc-v3.3/lib/python2.7/site-packages/supervisor/ui/stylesheets;
          access_log off;
        }

        location ^~ /images {
          alias  /Users/ocervell/.virtualenvs/ndc-v3.3/lib/python2.7/site-packages/supervisor/ui/images;
          access_log off;
        }

        location /supervisord {
            # Set client IP / Proxy IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP  $remote_addr;

            # Set host header
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_pass http://supervisord/;
        }
    }
}

Перед добавлением местоположений ^~ /images и ^~ /stylesheets страница возвращала 502 Bad Gateway.

С помощью приведенной выше конфигурации я могу получить доступ к localhost/supervisord, но на странице отсутствует CSS.

Я вижу, что css / изображения правильно загружаются в браузере:

Активы загружены

Но я вижу сообщение об ошибке в консоли браузера, и, похоже, виновата:

Таблица стилей не загружена

Тип mimetype в браузере для localhost/stylesheets/supervisor.css отображается как octet-stream вместо text/css.

Тип mimetype в браузере для localhost:9001/stylesheets/supervisor.css отображается как правильный text/css.

Как исправить эту ошибку?

Я думал о динамическом переписывании mimetype для статических файлов, но я не эксперт в nginx и понятия не имею, как это сделать из конфигурации nginx.


person JahMyst    schedule 10.02.2017    source источник


Ответы (2)


Это действительно интересно, такая очевидная функция, как размещение веб-интерфейсов за прозрачным обратным прокси-сервером, не так проста в настройке, как должна быть.

В любом случае это то, что я делаю, чтобы заставить обратный прокси-сервер работать с приложениями, в которых root не может быть изменен, например supervisor:

           location /supervisor {
           proxy_pass http://127.0.0.1:9001/;
           }

           location / {

            if ($http_referer ~ "^.*/supervisor"){
              return 301 /supervisor/$request_uri;
            }
          }

Запросы на стороне приложения будут попадать в основную конечную точку, но затем NginX перенаправит их на / supervisor EP.

Это работает в большинстве случаев, но не всегда. Следующие веб-функции супервизора не работают:

  1. получение подтверждения действия - вы можете запускать / останавливать службы, но страница результатов не загружается; просто зайдите в EP / supervisor, чтобы проверить результат

  2. живой хвост не работает; однако есть отображение журнала с обновлением вручную, которое работает по ссылке с названием программы.

В любом случае, эта частичная поддержка мне подходит, и вы можете найти ее полезной.

person Mr. Girgitt    schedule 19.08.2017

Мне удалось заставить его работать просто с помощью этого:

upstream supervisor {
  server 127.0.0.1:9001;
}

server {
  # ... 

  location /supervisor/ {
    proxy_pass  http://supervisor/;
  }
}

Работал даже в браузере с косой чертой в URL-адресе и без нее (т. Е. Как http://example.com/supervisor и http://example.com/supervisor/ работали). Это было для меня обязательным!

person Tiago Coutinho    schedule 31.03.2020