Может получить доступ к Apache через IP, но не домен с SSL

779
Nathan

У меня установлена ​​OwnCloud, я бы хотел, чтобы был доступен только https, а не http. Итак, я установил Lets Encrypt, который установил нормально. Я уже изменил apache conf к приложенному ниже. У меня есть переадресация на нашем маршрутизаторе для порта 443. Если я захожу на https: // IP, он работает, но я получаю предупреждение ssl, которое является нормальным, поскольку позволяет зашифровать полученный домен из конфигурации serverName для apache. Если я иду на https://files.domain.org.uk, я получаю 404.

Что я мог делать неправильно?

<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. ServerName files.domain.org.uk  ServerAdmin webmaster@localhost DocumentRoot /var/www/owncloud  # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn  ErrorLog $/error.log CustomLog $/access.log combined  # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf RewriteEngine on RewriteCond % =files.domain.org.uk RewriteRule ^ https://%% [END,QSA,R=permanent] </VirtualHost> 
0
Что произойдет, если вы измените порт директивы VirtualHost с 80 на 443 (начало файла ``к``)? По сути, вы объявили стандартный HTTP Vhost, но не один для HTTPS, поэтому Apache не знает, где искать ваш HTTPS-контент. Kinnectus 6 лет назад 0
Но если я перехожу к https: // ExternalIP обслуживает страницу, даже если он настроен на порт 80 Nathan 6 лет назад 0
Как странно, кажется, работает сейчас. Если вы добавите свой комментарий в ответ, я отмечу его как правильный Nathan 6 лет назад 0

1 ответ на вопрос

0
Kinnectus

Поскольку ваша директива VirtualHost для Apache содержит только директиву для HTTP-запросов (порт 80), когда вы запрашиваете ресурс HTTPS (порт 443), Apache будет смотреть на директивы и не сможет их сопоставить, потому что вы не объявили их для порта 443. ,

При переходе <VirtualHost *:80>к <VirtualHost *:443>Apache любой запрос на порт 443, который соответствует имени сервера files.domain.org.uk, должен искать в вашем DocumentRoot сценарии для отображения вашего сайта.

Вы можете сохранить <VirtualHost *:80>директиву, если хотите иметь возможность перейти по адресу http://files.domain.org.uk, но получить предупреждение о сертификате, или сохранить перенаправление с HTTP на HTTPS ...

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