Это - расширение (не простофиля) того, Как отключить non-ssl соединение на Apache 2.2
Как вышеупомянутый вопрос, я имею:
Добавленный виртуальная конфигурация хоста/etc/apache2/sites-available/example.com.conf с сертификатом SSL.
<IfModule mod_ssl.c>
<VirtualHost example.com:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /my/certs/mydomain.com.cert
SSLCertificateKeyFile /my/certs/mydomain.com.key
SSLCACertificateFile /my/certs/myprovider.ca
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Затем:
a2enconf ssl
включить SSL. a2ensite example.com
включить мой домен. a2dissite 000-default
отключить сайт значения по умолчанию хоста. a2dissite default-ssl
отключить значение по умолчанию хоста ssl сайт.То, что должно остаться, является только сайтом https://example.com/
Однако я могу также получить доступ к http://example.com/ (не-SSL), который является неожиданной функцией.
Ответы другого вопроса должны просто отключить порт 80 путем комментирования Listen 80
но это означает, что другие виртуальные хосты не смогут указать порт 80.
Почему Apache2, кажется, принимает порт 80, когда никакой виртуальный хост не указывает его и каков корректный путь, не отключая порт 80 в целом?
Это - почти ответ, в котором это не пропускает информацию из порта 80 случайно:
Создают файл в/etc/apache2/sites-available/forbidipaccess.conf с содержанием:
NameVirtualHost *:80
<VirtualHost *:80>
<Location />
Order deny,allow
Deny from all
</Location>
</VirtualHost>
Затем выполненный: sudo a2ensite forbidipaccess
и sudo service apache2 reload
Это не блокирует IP как таковой, но он делает ответ выпуска a 403 Forbidden
, если нет конфигурации с тем определенным доменным именем как его ServerName или ServerAlias.
, Если мы хотели быть суперхорошими и не любили "Запрещенное" сообщение, мы могли бы альтернативно использовать Apache, Переписывают для возврата 301/2/3, который передал бы пользователю эквивалентному SSL, например,
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/%$1 [R=301,L]