Nginx
DEBIAN - Nginx 和 Apache 反向代理失去 HTTPS 狀態?
我在 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。