Apache conf VirtualHost игнорируется - PullRequest
       28

Apache conf VirtualHost игнорируется

0 голосов
/ 09 октября 2019

Я использую Apache на CentOS 7. У меня есть 2 файла конфигурации в /etc/httpd/conf.d:

  • A10-my_site_dev.conf
  • A10-my_site_test.conf

Поскольку они похожи, я покажу вам только один из файлов:

<VirtualHost *:443>
    ErrorLog "logs/my_site_test.log"
    SSLCertificateFile /etc/ssl/host/host.crt
    SSLCertificateKeyFile /etc/ssl/host/host.key

    Alias /my-site/test/static /var/www/my_site_test/static/
    <Directory /var/www/my_site_test/static>
        Require all granted
    </Directory>

    WSGIScriptAlias /my-site/test /var/www/my_site_test/app/wsgi.py
    <Directory /var/www/my_site_test>
        Require all granted
    </Directory>
</VirtualHost>

В настоящее время VirtualHost в A10-my_site_test.conf игнорируетсяЕсли я зайду на https://my -server.com / my-site / test , у меня будет 404, но https://my -server.com / my-site / dev работает нормально. Если я удалю A10-my_site_dev.conf и перезапущу apache, https://my -server.com / my-site / test будет работать. Я понял, что это займет только первое обнаружение Apache VirtualHost.

У меня такое ощущение, что VirtualHost в моем ssl.conf тоже игнорируется, потому что, если я перейду SSLCertificateFile и SSLCertificateKeyFile *От 1030 * до ssl.conf у меня возникает следующая ошибка:

enter image description here

Я пытался не использовать VirtualHost, и в этом случае все работает нормально. Я думаю, что все VirtualHost игнорируются, кроме первого.

У меня такая же проблема с другими портами (например, 80).

Еще один момент: я прочитал, что у меня должно быть ServerName. Но у меня одно и то же имя сервера для всех моих сред. Я попытался указать в качестве ServerName что-то случайное, например «my_site_test», но у меня 404.

Как я могу настроить apache, чтобы мои 2 файла работали?

1 Ответ

0 голосов
/ 10 октября 2019

Это не так, как работают VirtualHosts. Особенно с SSL.

Итак, у вас есть:

<VirtualHost *:443>
    CONFIGURATION FOR DEV
</VirtualHost>

<VirtualHost *:443>
    CONFIGURATION FOR TEST
</VirtualHost>

Единственная разница между VirtualHosts - это журналы и каталог? Это не будет работать.

Apache может различать разделы VirtualHost на основании:

  • IP-адреса, связанного с доменом
  • Порт
  • ServerName (для конфигураций без SSL)

Как вы сейчас настроили, Apache не может различить оба VirtualHosts. Так что требуется первый найденный. Это объясняет путаницу с сертификатами.

Пример рабочей конфигурации

# www.example1.com == 1.1.1.1
# www.example2.com == 2.2.2.2

<VirtualHost 1.1.1.1:443>
    ServerName www.example1.com

    # SSL CONFIG
    # LOGS CONFIG
    # OTHER CONFIGURATION

</VirtualHost>

<VirtualHost 2.2.2.2:443>
    ServerName www.example2.com

    # SSL CONFIG
    # LOGS CONFIG
    # OTHER CONFIGURATION

</VirtualHost>

Прочитайте документацию (снова?), Она вам пригодится: https://httpd.apache.org/docs/2.4/vhosts/examples.html

На этом сайте есть сообщения, объясняющие тонкости настройки SSL VirtualHosts (я даже сам написал некоторые).

...