子域不适用于Apache2 / Debian9

时间:2018-08-07 07:54:02

标签: apache dns subdomain virtual-server

我想在我的虚拟服务器上使用Debian 9和Apache 2设置一个子域,该子域指向/ var / www / html / test中的目录。 还启用了SSL和“让我们加密”,因此也应该使用https来访问子域。

我的000-default.conf文件如下:

<VirtualHost _default_:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
<VirtualHost _default_:443>
        DocumentRoot /var/www/html
        ServerName www.example.com
        <IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
        </IfModule>
        SSLEngine on
        ServerAlias www.example.com
        SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

文件default-ssl.conf如下:

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerAdmin webmaster@localhost

                DocumentRoot /var/www/html

                SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
                SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>

                ServerName www.example.com
                ServerAlias example.com
        </VirtualHost>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

我制作了000-default.conf文件的新副本,将其命名为“ test.example.com.conf”,并通过a2ensite启用了它。该文件如下所示:

<VirtualHost _default_:80>

        ServerAdmin webmaster@test.example.com
        DocumentRoot /var/www/html/test

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

<VirtualHost _default_:443>
        DocumentRoot /var/www/html/test
        ServerName test.example.com
        <IfModule mod_headers.c>
                Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
        </IfModule>
        SSLEngine on
        ServerAlias test.example.com
        SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

我的hosts文件包含条目SERVER_IP_ADDRESS test.example.com

DNS服务器的“ A”条目带有指向SERVER_IP_ADDRESS的test.example.com。

从另一台计算机ping test.example.com以“找不到主机”结束,并且在虚拟服务器上执行ping操作会导致自身响应。

那为什么网络浏览器只显示“找不到服务器”? 我忘记了什么吗?我的配置有问题吗?

1 个答案:

答案 0 :(得分:0)

经过长期测试和研究,我发现了错误! 共有3:

  1. DNS A条目需要一些时间才能完成
  2. 我的.htaccess转发导致无论输入哪个子域,该URL始终都被重写为www.example.com
  3. 我的test.example.com.conf文件有一个错误,该错误使子域只能通过https使用:<VirtualHost _default_:80>内缺少ServerAlias指令

因此,到目前为止,它尚需改进...

我希望我会为我的错误提供帮助!