Назад | Перейти на главную страницу

Почему правило перезаписи IP-адреса показывает «Небезопасно», тогда как доменное имя хорошо работает в Apache2?

Я создал сертификат ssl для myDomain.com Следовательно, я вижу следующие 3 файла под /etc/apache2/sites-enabled в Ubuntu

example.com-le-ssl.conf  example.com.conf  example.conf

Мой example.com.conf выглядит так

<VirtualHost *:80>
    ServerAdmin admin@example
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
    JKMount /* ajp13_worker
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Теперь, если я войду http://www.example.com он перенаправлен на https://www.example.com

Но если кто-то узнает IP-адрес моего сервера и введите http://<myIpAddress> контент обслуживается не по протоколу https

Итак, я добавил это в дополнение к приведенному выше фрагменту virtualHost

<VirtualHost myIpAddr:80>
    ServerAdmin admin@example
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
    JKMount /* ajp13_worker
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =myIpAddr [OR]
RewriteCond %{SERVER_NAME} =myIpAddr:80
RewriteRule ^ https://www.example.com%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Но все же когда я вхожу http://myIpAddr:80 или http://myIpAddr я вижу это

Это потому, что ваш SSL-сертификат содержит ваше имя хоста (example.com и www.example.com), но не ваш IP-адрес. И не должно - обычные клиенты будут использовать только ваше реальное доменное имя, а не IP-адрес вашего сервера.

На основе показанной вами конфигурации ваше перенаправление должен перейдите к имени хоста, а не к IP-адресу, и невозможно понять, почему это пойдет не так, основываясь только на вашей конфигурации. Но я не совсем понимаю, почему вы думаете, что вам нужен отдельный виртуальный хост для вашего IP-адреса или почему вам вообще нужно выполнять сопоставление RewriteCond в заголовке Host.

Я должен удалить строки RewriteCond из ваших файлов и оставить только строки RewriteRule.

Также проверьте третий файл, который у вас есть - обычно не должно быть обоих example.com.conf и example.conf. В этом файле может быть что-то, что читается до конфигурации с IP-адресом.