Как отключить не-SSL на Apache только на хосте, не отключая в виртуальных хостах?

Это - расширение (не простофиля) того, Как отключить 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>

Затем:

  1. Выполненный a2enconf ssl включить SSL.
  2. Выполненный a2ensite example.com включить мой домен.
  3. Выполненный a2dissite 000-default отключить сайт значения по умолчанию хоста.
  4. Выполненный a2dissite default-ssl отключить значение по умолчанию хоста ssl сайт.

То, что должно остаться, является только сайтом https://example.com/

Однако я могу также получить доступ к http://example.com/ (не-SSL), который является неожиданной функцией.

Ответы другого вопроса должны просто отключить порт 80 путем комментирования Listen 80 но это означает, что другие виртуальные хосты не смогут указать порт 80.

Почему Apache2, кажется, принимает порт 80, когда никакой виртуальный хост не указывает его и каков корректный путь, не отключая порт 80 в целом?

3
задан 13 April 2017 в 15:23

1 ответ

Это - почти ответ, в котором это не пропускает информацию из порта 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]
1
ответ дан 1 December 2019 в 17:31

Другие вопросы по тегам:

Похожие вопросы: