Apache отображает “Страницу По умолчанию” при использовании https://www.example, но работы для https://пример

Я испытываю затруднения из-за своей конфигурации Apache и не могу заставить это подавать мое основное веб-приложение, когда я ввожу URL, который включает WWW (https://www.example.com), но это хорошо работает, когда я не делаю (https://example.com).

Я попытался добавить отдельные строки:

  • ServerAlias www.example.com
  • ServerAlias *example.com

ко всем VirtualHosts, но это не имело никакого значения.

От моих тестов я вижу, что перенаправления работают, но я могу только получить доступ к основному сайту через определенные URL:

Я задавался вопросом, мог ли кто-то помочь мне решить это так, я могу поразить свой mainsite от любого URL. Также я должен продемонстрировать этот сайт клиенту очень скоро, и борюсь за решение!

Вот моя конфигурация Apache:

000 значений по умолчанию conf

<VirtualHost *:80>
    Alias /static /home/user/project_1/static
    <Directory /home/user/project_1/static>
        Require all granted
    </Directory>

   ServerName example.com

   Redirect permanent / https://example.com/
</VirtualHost>

значение-по-умолчанию-ssl.conf

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html
        Alias /static /var/www/example.com/static

        <Directory /home/user/project_1/static>
            Require all granted
        </Directory>

        Alias /media /home/user/project_1/media
        <Directory /home/user/project_1/media>
            Require all granted
        </Directory>

        ...
        ...

        <Directory /home/user/project_1/mywebapp>
            <Files wsgi.py>
                Require all granted
            </Files>
        </Directory>

        WSGIDaemonProcess user python-home=/home/user/project_1/env_mywebapp python-path=/home/user/project_.......

        WSGIProcessGroup mywebapp
        WSGIScriptAlias / /home/user/project_1/mywebapp/wsgi.py

        ServerName      example.com

        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

        Include /etc/letsencrypt/options-ssl-apache.conf
    </VirtualHost>
</IfModule>

le-redirect-example.com.conf (Созданный позволяют нам зашифровать certbot),

<VirtualHost _default_:80>
    ServerName example.com

    ServerSignature Off

    RewriteEngine On
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

    ErrorLog /var/log/apache2/redirect.error.log
    LogLevel warn
</VirtualHost>

Спасибо за помощь!

[ОБНОВЛЕНИЕ]

Вот вывод от выполнения команды "завихрение-I"

root@host1:~# curl -I www.example.com
HTTP/1.1 301 Moved Permanently
Date: Mon, 16 Apr 2018 18:23:20 GMT
Server: Apache/2.4.18 (Ubuntu)
Location: https://example.com/
Content-Type: text/html; charset=iso-8859-1

root@host1:~# curl -I example.com
HTTP/1.1 301 Moved Permanently
Date: Mon, 16 Apr 2018 18:24:31 GMT
Server: Apache/2.4.18 (Ubuntu)
Location: https://example.com/
Content-Type: text/html; charset=iso-8859-1

root@host1:~# curl -I https://example.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2018 18:25:23 GMT
Server: Apache/2.4.18 (Ubuntu)
Vary: Cookie,Accept-Encoding
X-Frame-Options: SAMEORIGIN
Set-Cookie: csrftoken=zxxxxxxxxxxxxxxxxxxxxxzBcrBOvUDUdxxxxxxxxxxxxxxxx; expires=Mon, 15-Apr-2019 18:25:23 GMT; Max-Age=31449600; Path=/
Content-Type: text/html; charset=utf-8

root@host1:~# curl -I https://www.example.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2018 18:26:15 GMT
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Tue, 03 Jan 2017 02:48:33 GMT
ETag: "1234-12347b43...."
Accept-Ranges: bytes
Content-Length: 11321
Vary: Accept-Encoding
Content-Type: text/html
0
задан 16 April 2018 в 11:30

1 ответ

У вас есть это в вашей конфигурации:

ServerName example.com

Это соответствует example.com, но не www.example.com. Это два разных имени. Если вы используете https (как и на основе конфигурации), вам также потребуется либо сертификат с несколькими именами, подстановочный знак или отдельные сертификаты для example.com и www.example.com.

Используйте ServerAlias www.example.com, чтобы добавить псевдоним для ServerName. Это также задокументировано в превосходной документации Apache , которая должна быть первой остановкой, когда что-то не работает:

Когда приходит запрос, сервер найдет лучшее (большинство специфический) соответствующий аргумент, основанный на IP-адресе и порте, используемом запросом. Если существует более одного виртуального хоста, содержащего эту комбинацию адреса и порта с наилучшим соответствием, Apache будет дополнительно сравнивать директивы ServerName и ServerAlias ​​с именем сервера, присутствующим в запросе.

1
ответ дан 30 October 2019 в 02:15

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

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