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;
}
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;
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?
Tags nginx reverse-proxy monit