Apache: перенаправить на https перед AUTH для состояния сервера
Я хочу заставить https и базовую аутентификацию для вывода состояния сервера (mod_status). Если я включу аутентификацию и пользователь попросит http://site/server-status
Apache сначала запрашивает pass, затем перенаправляет на httpS, затем снова запрашивает pass.
Этот вопрос похож на Apache - перенаправить на https перед AUTH и принудительно установить https с apache перед.htpasswd, но я не могу заставить его работать, потому что мы говорим не об общей папке, а о структуре Location.
Моя конфигурация (коротко) выглядит следующим образом:
<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. Если это имеет значение, на сервере есть несколько сайтов.
Что я делаю неправильно? Спасибо.
2 ответа
Есть ли способ разделить 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>
раздел.