DEBIAN - O proxy reverso Nginx e Apache perde o estado HTTPS?

1

Eu tenho um problema ao configurar o nginx e o apache em uma máquina Debian 8. Eu uso o proxy reverso do nginx, que é configurado para rodar em HTTPS (e funciona como um encanto). Mas, quando os pedidos são enviados para o Apache, o $ _SERVER ['HTTPS'] está vazio, embora deva estar "ON" (de qualquer forma, é isso que eu gostaria de conseguir)? Aqui está minha configuração do apache:

<VirtualHost 127.0.0.1:8080>
    ServerName shop.mywebsite.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www_shop

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    LogLevel debug
  <Directory "/">
    Require all granted
  </Directory>
</VirtualHost>

E aqui está o meu congif nginx, parte no proxy pass:

    location ~ \.php {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_set_header X-Original-Request $request_uri;
    add_header              Front-End-Https on;
    proxy_pass http://127.0.0.1:8080;
}

Qualquer ajuda, qualquer pista, apreciado;) Obrigado, Olivier.

    
por Olivier 05.09.2017 / 23:09

1 resposta

1

O estado HTTPS que você está procurando é definido se a conexão com o servidor da Web for via HTTPS. Como você está procurando por este valor no Apache, mas apenas o Nginx está manipulando o pedido via HTTPS e o Apache sendo requisitado via HTTP pelo Nginx, o status deve ser no-HTTPS.

Na sua configuração de proxy do Nginx, você irá configurar um cabeçalho adicional. O que você precisa fazer é verificar esses cabeçalhos no Apache e sobrescrever o sinalizador de status HTTPS

Portanto, você precisa instalar e ativar o mod_setenvif no Apache e adicionar o seguinte à sua configuração do Apache:

<IfModule mod_setenvif.c>
    SetEnvIf X-Forwarded-Proto "https" HTTPS=on
</IfModule>

Em sua configuração do Nginx, falta uma configuração. Contanto que o seu Apache não tenha múltiplos hosts virtuais, não importa, mas eu recomendo adicionar o seguinte na sua configuração do Nginx:

proxy_http_version 1.1;

Ao configurar este Nginx fala com o Apache no HTTP / 1.1. O padrão é HTTP / 1.0.

    
por 06.09.2017 / 06:56