具有两个域的VirtualHost不起作用

时间:2019-08-01 13:20:01

标签: apache ubuntu google-cloud-platform virtualhost google-cloud-dns

我无法使用VirtualHost配置两个域,因为始终只向我显示一个域。我的意思是,如果我访问domainB.com,将我重定向到domainA.com,并且domainA.com正常运行。我在其他主机(例如DigitalOcean或我自己的本地主机)中进行了此过程,但是在此实例下我找不到问题。如果我禁用一个站点,则其他站点可以正常工作。

我有一个带有两个域(virtualhost)的Ubuntu 17.10和Apache2的google实例。我禁用了默认虚拟主机。我的文件夹结构是/ var / www / domainA /和/ var / www / domainB /

Cloud DNS配置了两个区域domainA.com和domainB.com,其中A和CNAME记录指向我的服务器IP。我也有NS记录指向googledomains.com,并在我的registar中添加了这些DNS。

如果我对这两个域执行ping操作,它们将正确解析为我的IP地址,而不会出现问题。

我在可用站点中配置了两个域:

#in /etc/apache/sites-available/domainA.com.conf
<VirtualHost *:443>
        ServerAdmin webmaster@domainA.com
        ServerName domainA.com
        ServerAlias www.domainA.com
        DocumentRoot /var/www/domainA

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

        SSLEngine on
        SSLCertificateFile /etc/apache2/sslcert/certified-number.crt
        SSLCertificateKeyFile /etc/apache2/sslcert/domainA.com.key
        SSLCertificateChainFile /etc/apache2/sslcert/gd_bundle-g2-g1.crt

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /var/www/domainA/>
            Options FollowSymLinks
            AllowOverride All
        </Directory>

        <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
        </Directory>
</VirtualHost>

#in /etc/apache/sites-available/domainB.com.conf
<VirtualHost *:80>
        ServerAdmin webmaster@domainB.com
        ServerName domainB.com
        ServerAlias www.domainB.com
        DocumentRoot /var/www/domainB

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

        <Directory /var/www/domainB/>
                Options FollowSymLinks
                AllowOverride All
        </Directory>
</VirtualHost>

apachectl -S命令的结果:

sudo apache2ctl -S

VirtualHost configuration:
*:80                   domainB.com (/etc/apache2/sites-enabled/domainB.conf:1)
*:443                  domainA.com (/etc/apache2/sites-enabled/domainA.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default 
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

我还必须检查其他哪些设置?

更新信息:如果我将www用作domainA,则工作正常。

  • www.domainA.com->作品
  • domainA.com->不起作用,重定向到domainB.com
  • www.domainB.com->作品
  • domainB.com->有效

1 个答案:

答案 0 :(得分:1)

我在domainA.com的端口443中只有VirtualHost配置。

我添加了一个重定向为ssl的配置*:80并可以正常工作。像这样:

<VirtualHost *:80>
        ServerAdmin webmaster@domainA.com
        ServerName domainA.com
        ServerAlias www.domainA.com
        Redirect / https://www.domainA.com/
</VirtualHost>

感谢Matt Raines的评论。