Problema:
- Eu uso uma
proxy_pass
diretiva nginx para redirecionarhttps
solicitações com umlocation
caminho específico no URI, por exemplo,https://domain/path/index.html
parahttp://container_ip:port/index.html
. - Isso funciona bem para a solicitação inicial.
- Entretanto, se o arquivo HTML especificar recursos a serem carregados, os clientes pesquisarão esses recursos sem o caminho, usando apenas a URL base; no exemplo
https://domain/main.css
.
Pergunta:
Como posso configurar o nginx para que tais recursos também sejam pesquisados no caminho original; no exemplo em https://domain/path/main.css
?
Configuração incorreta atual do nginx:
server {
listen 443 ssl;
server_name domain;
[...]
location /path/ {
proxy_set_header Host $host;
proxy_pass http://container_ip:port/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Responder1
Os caminhos para os recursos são gerados pelo seu aplicativo. A abordagem adequada e confiável é corrigir seu aplicativo para gerar URLs de recursos com caminhos corretos.
Se você quiser uma solução não confiável, você pode tentar usarhttp://nginx.org/en/docs/http/ngx_http_sub_module.htmlpara substituir URLs de recursos nas respostas dos proxies nginx. No entanto, existe a possibilidade de efeitos colaterais indesejados que podem ser difíceis de diagnosticar.