Nginx

DEBIAN - Nginx 和 Apache 反向代理失去 HTTPS 狀態?

  • September 6, 2017

我在 Debian 8 機器上配置 nginx 和 apache 時遇到問題。我使用 nginx 的反向代理,它設置為在 HTTPS 上執行(它的工作原理就像一個魅力)。但是,當請求發送到 Apache 時,$_SERVER

$$ ‘HTTPS’ $$是空的,雖然它應該是“ON”(無論如何,這就是我想要實現的)?這是我的 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>

這是我的 nginx congif,代理傳遞的一部分:

   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;
}

任何幫助,任何線索,感謝;)謝謝,奧利維爾。

如果與 Web 伺服器的連接是通過 HTTPS 進行的,則會設置您正在尋找的 HTTPS 狀態。由於您在 Apache 中查找此值,但只有 Nginx 通過 HTTPS 處理請求,並且 Nginx 通過 HTTP 請求 Apache,因此狀態必須為 no-HTTPS。

在 Nginx 的代理配置中,您將設置一些額外的標頭。您需要做的是,在 Apache 中檢查這些標頭並覆蓋 HTTPS 狀態標誌

因此,您必須在 Apache 中安裝並啟動mod_setenvif並將以下內容添加到您的 Apache 配置中:

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

在您的 Nginx 配置中,缺少一項設置。只要您的 Apache 沒有多個虛擬主機,沒關係,但我建議在您的 Nginx 配置中添加以下內容:

proxy_http_version 1.1;

通過設置這個 Nginx 在 HTTP/1.1 中與 Apache 對話。預設值為 HTTP/1.0。

引用自:https://serverfault.com/questions/872195