Я изменил настройку 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. Похоже, это привело к ошибкам. Поменял и теперь работает :)
Спасибо за вашу помощь.