
Estou usando o Nginx para atuar como um proxy SSL dentro de um contêiner docker escutando na porta 443. O proxy funciona corretamente e roteia corretamente o tráfego para outra instância Nginx upstream na porta 80 (que reside dentro de outro contêiner).
Estou encontrando problemas de conteúdo misto e não tenho certeza de qual seria a solução adequada:
Uma solicitação direcionada a uma pasta (mas sem a barra final) como: https://example.com/mediafiles/bar
é roteada corretamente para a segunda instância do NginX.
No entanto, obtém um 301 para um URL http (cabeçalhos de resposta):
$ curl -IL https://example.com/mediafiles/bar
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 15 Jun 2015 15:16:29 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: http://example.com/mediafiles/bar/
X-UA-Compatible: IE=Edge,chrome=1
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 15 Jun 2015 15:16:29 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://example.com/mediafiles/bar/
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 15 Jun 2015 15:16:29 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1786
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Wed, 18 Mar 2015 23:09:35 GMT
Vary: Accept-Encoding
ETag: "550a05af-6fa"
Accept-Ranges: bytes
X-UA-Compatible: IE=Edge,chrome=1
Provavelmente causado por esta configuração try_files comum (EDIT: aparentemente não está emitindo redirecionamentos).
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.php?$args;
}
Postei a configuração upstream completa aqui:https://gist.github.com/mgcrea/f149d0481ad1fa1c2207
E a configuração do proxy relevante aqui:https://gist.github.com/mgcrea/26ef92026a20ccc22226
Este 301 para um recurso http aciona um erro de conteúdo misto:
Conteúdo misto: a página em 'https://example.com'foi carregado por HTTPS, mas solicitou um recurso inseguro'http://example.com/mediafiles/bar/'. Esta solicitação foi bloqueada; o conteúdo deve ser veiculado por HTTPS.
Alguma ideia?
Parece estar relacionado:https://stackoverflow.com/questions/15555428/nginx-causes-301-redirect-if-theres-no-trailing-slash