Https
Apache 將 http 重定向到 https,特定來源除外
我希望能夠在我們的 apache 配置上將所有流量從 http 重定向到 https,除非傳入請求來自特定來源(在這種情況下,它來自與伺服器相同的 IP)。
上下文:我們有一個 Zend 伺服器執行一個帶有 apache 配置的 php 應用程序,並且同一個 Zend 伺服器也執行一個作業隊列,它執行一個 http 作業到我們的一個 REST 端點。顯然,我們不能通過 https 路由它,因為它是內部流量,但我不確定如何建構我們的 RewriteConds,以便它能夠正確地通過並僅為該特定請求者提供 http,但為其他所有人提供 https。
這是目前的條件 - 我真的不太熟悉 Apache 語法,但我必須使用我所知道的;)
<VirtualHost *:80> TimeOut 5600 ServerName <name> ServerAlias <alias> RewriteEngine On RewriteCond %{HTTP_HOST} !=example\.com\:80 RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] DocumentRoot <docroot> RewriteCond %{REQUEST_URI} !^(/index\.php|/favicon\.ico|/robots\.txt|/a/css(.*)|/a/js(.*)|/a/i(.*)|/alive\.html) RewriteRule ^(.*)$ /index.php/$1 [L] <Directory "<docroot>"> Options All AllowOverride All Require all granted </Directory> </VirtualHost> <VirtualHost *:443> TimeOut 12000 ServerName <name> ServerAlias <alias> DocumentRoot <docroot> RewriteEngine on RewriteCond %{REQUEST_URI} !^(/index\.php|/favicon\.ico|/robots\.txt|/a/css(.*)|/a/js(.*)|/a/i(.*)|/alive\.html) RewriteRule ^(.*)$ /index.php/$1 [L] ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "<docroot>"> Options All AllowOverride All Require all granted </Directory> SSLEngine on ...ssl etc </VirtualHost>
%{HTTP_HOST}
指的是伺服器主機名,即標Host:
頭,而您想要的條件是特定的源 IP 地址。你應該比較%{REMOTE_ADDR}
,而不是:RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1
此外,您可以將 HTTPS 用於本地流量,但這不是必需的。