Ssl
Apache:在伺服器狀態的 AUTH 之前重定向到 https
我想對伺服器狀態輸出(mod_status)強制使用 https 和基本身份驗證。如果我啟用身份驗證並且使用者要求
http://site/server-status
apache 首先要求通過,然後重定向到 httpS,然後再次要求通過。這個問題類似於 Apache - Redirect to https before AUTH and force https with apache before .htpasswd 但我無法讓它工作,因為我們談論的不是通用文件夾而是位置結構。
我的配置(很快)如下:
<Location /server-status> SSLRequireSSL <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /server-status RewriteCond %{HTTPS} off RewriteCond %{SERVER_PORT} 80 RewriteRule ^ - [E=nossl] RewriteRule (.*) https://site/server-status} [R=301,L] </IfModule> SetHandler server-status Order deny,allow Deny from all Allow from localhost ip6-localhost Allow from 1.2.3.0/24 Allow from env=nossl AuthUserFile /etc/httpd/status-htpasswd AuthName "Password protected" AuthType Basic Require valid-user Satisfy any </Location>
我假設
Allow from env=nossl
應該允許每個人使用RewriteCond %{HTTPS} off
和伺服器埠 80,然後強制它重定向但它不起作用。請注意,我不想強制對整個站點進行 SSL,而只是 /server-status。如果重要,伺服器有幾個站點。
我究竟做錯了什麼?謝謝你。
有沒有辦法可以將 HTTP 和 HTTPS 分成兩個虛擬主機?您可以僅將 Auth 放在 HTTPS 上,並將 HTTP 重定向到 HTTPS。完整的配置看起來像這樣。
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com Redirect / https://example.com/ </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> ServerName example.com ServerAlias www.example.com . . . </VirtualHost> </IfModule>
我沒有太多的
RewriteCond %{HTTPS} off
工作運氣——相反,對我有用的是RewriteCond %{SERVER_PORT} !443
另一個建議(來自這個問題)是將 Auth 行移到一個
<VirtualHost *:443>
部分中。