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

Apache с suexec, fcgid показывает контент с неправильного vHost через ssl

Я изменил настройку Apache на рабочий режим, suexec и fcgid, как описано в этом руководстве: https://wiki.hetzner.de/index.php/Apache_PHP5_fcgi_und_SuExec.

Все почти все отлично работает. Я написал сценарий, который настраивает все для меня, а также создает сертификаты и конфигурацию vHost с помощью ssl.

Ниже вы можете увидеть типичный файл. Когда я обращаюсь к серверу через порт 80, все работает нормально. Когда я подключаюсь к нему через https, использует правильные сертификаты из pad.dblx.io, но вместо этого показывает содержимое vHost по умолчанию (dblx.io).

Я ищу ошибки в течение нескольких часов, но не могу найти неправильную конфигурацию.

Вы можете помочь мне?

кот /etc/apache2/sites-available/pad.dblx.io

<VirtualHost *:80>
    ServerAdmin xxx
    ServerName pad.dblx.io
    ServerAlias pad.dblx.io *.pad.dblx.io

    SuexecUserGroup xxx xxx
    AddHandler fcgid-script .php
    DocumentRoot "/var/www/pad.dblx.io/www"
    DirectoryIndex index.htm index.html index.php

    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory "/var/www/pad.dblx.io/www">
        Options Indexes MultiViews FollowSymLinks +ExecCGI
        FCGIWrapper /var/www/pad.dblx.io/php-fcgi/php-fcgi-starter .php     
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    LogLevel warn
    ErrorLog  /var/www/pad.dblx.io/logs/error.log
    CustomLog /var/www/pad.dblx.io/logs/access.log combined
    ServerSignature On
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin xxx
    ServerName pad.dblx.io
    ServerAlias pad.dblx.io *.pad.dblx.io

    SuexecUserGroup xxx xxx
    AddHandler fcgid-script .php
    DocumentRoot "/var/www/pad.dblx.io/www"
    DirectoryIndex index.htm index.html index.php

    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory "/var/www/pad.dblx.io/www">
        Options Indexes MultiViews FollowSymLinks +ExecCGI
        FCGIWrapper /var/www/pad.dblx.io/php-fcgi/php-fcgi-starter .php        
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    SSLEngine On
    SSLCertificateFile /var/www/pad.dblx.io/certs/pad.dblx.io.crt
    SSLCertificateKeyFile /var/www/pad.dblx.io/certs/pad.dblx.io.key

    LogLevel warn
    ErrorLog  /var/www/pad.dblx.io/logs/error.log
    CustomLog /var/www/pad.dblx.io/logs/access.log combined
    ServerSignature off
</VirtualHost>

кошка / и т.д. / apache2 / сайты-доступные / по умолчанию

<VirtualHost _default_:80>
    ServerAdmin xxx
    ServerName dblx.io
    ServerAlias dblx.io v220110896656016.yourvserver.net

    SuexecUserGroup xxx xxx
    AddHandler fcgid-script .php
    DocumentRoot "/var/www/dblx.io/www"
    DirectoryIndex index.htm index.html index.php

    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory "/var/www/dblx.io/www">
        Options Indexes MultiViews FollowSymLinks +ExecCGI
        FCGIWrapper /var/www/dblx.io/php-fcgi/php-fcgi-starter .php     
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    LogLevel warn
    ErrorLog  /var/www/dblx.io/logs/error.log
    CustomLog /var/www/dblx.io/logs/access.log combined
    ServerSignature On
</VirtualHost>

<VirtualHost _default_:443>
    ServerAdmin xxx
    ServerName dblx.io
    ServerAlias dblx.io *.dblx.io

    SuexecUserGroup xxx xxx
    AddHandler fcgid-script .php
    DocumentRoot "/var/www/dblx.io/www"
    DirectoryIndex index.htm index.html index.php

    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory "/var/www/dblx.io/www">
        Options Indexes MultiViews FollowSymLinks +ExecCGI
        FCGIWrapper /var/www/dblx.io/php-fcgi/php-fcgi-starter .php        
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    SSLEngine On
    SSLCertificateFile /var/www/dblx.io/certs/dblx.io.crt
    SSLCertificateKeyFile /var/www/dblx.io/certs/dblx.io.key

    LogLevel warn
    ErrorLog  /var/www/dblx.io/logs/error.log
    CustomLog /var/www/dblx.io/logs/access.log combined
    ServerSignature On
</VirtualHost>

кот /etc/apache2/ports.conf

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    NameVirtualHost *:443
    Listen 443
    SSLStrictSNIVHostCheck off
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

Ваша конфигурация указывает две конфигурации vhost для порта 443 всех IP-адресов, которые прослушивает Apache.

Без TLS SNI у вас не может быть более одного виртуального хоста, соответствующего директиве NameVirtualHost, и ожидать, что он будет работать.

Если ваша установка не поддерживает указание имени сервера TLS, то вы фактически ограничены одним сертификатом TLS на каждый IP-адрес.

Вам нужно будет решить, какой сайт вы хотите обслуживать через HTTPS, получить сертификат, охватывающий оба варианта, и включить TLS SNI, или получить больше IP-адресов, чтобы у каждого сайта был свой собственный.

В любом случае вам также может быть лучше явно указать IP и порт, если вы идете по маршруту «добавить больше IP»:

<VirtualHost aaa.bbb.ccc.ddd:443>
...
</VirtualHost>

Если вы планируете идти по маршруту SNI, эта страница вики Apache может стоить взглянуть.

Я нашел ответ.

Я создал vHost для dblx.io со своим скриптом и скопировал его в / etc / apache2 / sites-available / default.

Я забыл удалить подстановочный знак * .dblx.io как ServerAlias ​​в части SSL. Похоже, это привело к ошибкам. Поменял и теперь работает :)

Спасибо за вашу помощь.