Nginx, proxy_pass, links relativos mutilados upstream

1

Estou tendo um problema com o nginx proxy_pass e me debrucei sobre a documentação do HttpProxyModule no wiki nginx, mas não consigo descobrir.

Eu tenho Supervisor ( link ) rodando em um localhost (127.0.0.1:9001) e nginx redirecionando todo o tráfego da porta 80 para 443. Gostaria de poder acessar a página de status do supervisor quando for para https://mydomain/supervisor .

As partes relevantes do meu arquivo nginx.conf se parecem com isso -

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/;
    }
}

Isso funciona muito bem, quando vou para https://mydomain/supervisor , obtenho a página de status do supervisord. Mas quando eu clico no link 'Atualizar' (na página, não na atualização do navegador) ou inicio / paro um processo, estou sendo mandado de volta para uma página como http://mydomain/?message=Process app started , que me leva a uma tela inicial nginx em vez da página do supervisor. Eu verifiquei duas vezes a fonte html na página e ela está me dando links relativos. Então, parece ser algo na minha configuração que está tirando o / supervisor /, eu não tenho certeza do que.

Obrigado,

    
por Kafonek 28.04.2014 / 18:39

2 respostas

0

Parece que o supervisor não funciona bem quando é executado no subpath.

Configure o Nginx com o supervisor acessível no subdomínio, por exemplo: link

    
por 28.04.2014 / 23:00
1

Consegui fazer isso adicionando isso ao meu arquivo de configuração 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;
  }
    
por 09.07.2014 / 00:36