带有 suexec 的 Apache,fcgid 通过 ssl 显示来自错误 vHost 的内容

带有 suexec 的 Apache,fcgid 通过 ssl 显示来自错误 vHost 的内容

我将 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。这似乎导致了错误。我更改了它,现在可以正常工作了 :)

感谢您的帮助。

相关内容