我将 Apache 设置更改为工作模式、suexec 和 fcgid,如本教程中所述:https://wiki.hetzner.de/index.php/Apache_PHP5_fcgi_und_SuExec。
几乎所有东西都运行正常。我编写了一个脚本,它为我设置了一切,还创建了证书和带有 SSL 的 vHost 配置。
您可以在下面看到一个典型文件。当我通过端口 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>
答案1
您的配置为 Apache 正在监听的所有 IP 的端口 443 指定了两个 vhost 配置。
如果没有 TLS SNI,您就不能拥有多个与 NameVirtualHost 指令匹配的 vhost 并期望它能正常工作。
如果您的设置不支持 TLS 服务器名称指示,那么每个 IP 实际上只能有一个 TLS 证书。
您必须决定要通过 HTTPS 为哪个站点提供服务,获取涵盖两者的证书并启用 TLS SNI,或者获取更多 IP 以便每个站点都可以拥有自己的 IP。
无论如何,如果您要采用“添加更多 IP”路线,最好像这样明确指定 IP 和端口:
<VirtualHost aaa.bbb.ccc.ddd:443>
...
</VirtualHost>
如果你打算走 SNI 路线,此 Apache 维基页面值得一看。
答案2
我找到了答案。
我使用脚本为 dblx.io 创建了一个 vHost,并将其复制到 /etc/apache2/sites-available/default。
我忘记删除 SSL 部分中的通配符 *.dblx.io 作为 ServerAlias。这似乎导致了错误。我更改了它,现在可以正常工作了 :)
感谢您的帮助。