Como redirecionar o nginx de http para https atrás de um proxy reverso do apache?

1

Eu tenho um site wordpress em execução no nginx (localhost; porta 8081) por trás de um proxy reverso do apache 2.4. Tudo funciona bem. Agora eu quero redirecionar todos os pedidos de http para https, então eu modifiquei meu virtualhost apache padrão assim:

ProxyPreserveHost On
ProxyRequests Off
# NO SSL - OLD
#ProxyPass / http://localhost:8081/
#ProxyPassReverse / http://localhost:8081/
# SSL - NEW
SSLProxyEngine On
RequestHeader set Front-End-Https "On"
ProxyPass / https://localhost:8081/
ProxyPassReverse / https://localhost:8081/

E minha configuração nginx assim:

server {
    listen 8081 ssl;
    server_name example.com;
    root /home/mywordpress;
    index index.php;

    location = /favicon.ico {
            log_not_found off;
            access_log off;
    }

    location ~ /.well-known {
            allow all;
    }

    location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
    }

    location / {
            try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
            include fastcgi_params;
            fastcgi_intercept_errors on;
            fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
            log_not_found off;
    }

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
}

E adicionou esse SSL padrão - apache virtualhost:

<VirtualHost _default_:443>

    # SSL
    SSLProxyEngine On
    RequestHeader set Front-End-Https "On"
    ProxyPass / https://localhost:8081/
    ProxyPassReverse / https://localhost:8081/

    ProxyPreserveHost On
    ProxyRequests Off

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
</VirtualHost>

Vamos criptografar está funcionando bem. Agora, quando eu vou para a versão http eu sou redirecionado para a versão https, mas ... eu posso ver texto, links e entradas, mas não o conteúdo estático como javascript, css ou imagens (erro 404). Esse conteúdo estático ainda é acessível. Se eu escrevo seu URL no-https em um navegador, posso obtê-lo (200 OK), então algo não está funcionando com SSL e esse tipo de conteúdo. Procurei informações sobre problemas semelhantes, mas não encontrei nenhuma resposta. O que estou fazendo de errado?. Estou ficando louco. Obrigado.

    
por Lonnrot 30.06.2018 / 21:01

0 respostas