Я создал сертификат 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-адресом.