nginx proxypass links de monit

3

Estou tentando configurar o Nginx para encaminhar solicitações para vários serviços de back-end usando proxy_pass.

Carregando https://example.com/monit funciona, mas os links da página são para https://example.com/sshd em vez de https://example.com/monit/sshd

Estou executando o programa 5.2.5

Eu tentei com e sem a regra de reescrita abaixo.

Arquivos de configuração;

proxy.conf

location /monit {
#       rewrite /monit/(.*) /$1 break;
        proxy_pass        http://localhost:2812/;
        include proxy.inc;
}
.... more entries ....

sites habilitados / main

server {
    listen 443;

    server_name example.com;
    server_name_in_redirect off;

    include proxy.conf;

    ssl on;
}

proxy.inc

proxy_connect_timeout   59s;
proxy_send_timeout      600;
proxy_read_timeout      600;
proxy_buffer_size       64k;
proxy_buffers           16 32k;
proxy_pass_header       Set-Cookie;
proxy_redirect          off;
proxy_hide_header       Vary;

proxy_busy_buffers_size         64k;
proxy_temp_file_write_size      64k;

proxy_set_header        Accept-Encoding         '';
proxy_ignore_headers    Cache-Control           Expires;
proxy_set_header        Referer                 $http_referer;
proxy_set_header        Host                    $host;
proxy_set_header        Cookie                  $http_cookie;
proxy_set_header        X-Real-IP               $remote_addr;
proxy_set_header        X-Forwarded-Host        $host;
proxy_set_header        X-Forwarded-Server      $host;
proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
proxy_set_header        X-Forwarded-Ssl         on;
proxy_set_header        X-Forwarded-Proto       https;
    
por Thermionix 05.01.2012 / 04:48

2 respostas

2

Eu modifiquei a regra de regravação e assegurei a limpeza do cache, e isso funciona;

location /monit {
        rewrite ^/monit/(.*) /$1 break;
        proxy_pass        http://localhost:2812/;
        include proxy.inc;
}
    
por 06.01.2012 / 02:09
0

Infelizmente, o monit não possui nenhuma configuração que permita definir o BASE_URL de suas solicitações, o que significa que ele sempre adicionará seus serviços diretamente em /, o que quebra seu / monit proxymatch. :( Uma solução, mas talvez feia, é nomear seus serviços monit de uma maneira que você possa corresponder a esse nome no nginx.

Essa é a única maneira pela qual você poderá fazer isso, a menos que você, de alguma forma, hackear a fonte monit para alterar o URL para link , mas Eu acredito que é mais difícil?

Outra opção pode ser se você puder executar o nginx em uma porta parallell e apenas reescrever o acesso a esta porta em direção à URL / porta monit, dessa forma você pode reescrever / proxypassar o inteiro / em vez de / monit que funcionaria . Depende do seu IP público e portas disponíveis, mas deve fazer o truque?

    
por 05.01.2012 / 05:01