我正在使用 Ubuntu 18.04.1 LTS 配置新服务器 (droplet)。我安装了 apache 并配置了虚拟主机。服务器名称是www.speedysoftware.com这是 的值/etc/hostname
。问题是,我试图重定向http://www.speedysoftware.com/到特定虚拟主机,但重定向到默认虚拟主机。另一方面,http://www.speedysoft.com/和http://www.speedy-software.com/重定向到正确的虚拟主机,该虚拟主机应与http://www.speedysoftware.com/
文件/etc/apache2/sites-available/000-default.conf
:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerAdmin [email protected]
DocumentRoot /var/www/general
<Directory /var/www/general>
Options +FollowSymLinks
Options -Indexes
AllowOverride All
Require all granted
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
文件/etc/apache2/sites-available/speedysoftware.conf
:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName www.speedysoftware.com
ServerAlias speedysoftware.com *.speedysoftware.com
ServerAlias speedy-software.com *.speedy-software.com
ServerAlias speedysoft.com *.speedysoft.com
# ... (more ServerAliases)
ServerAdmin [email protected]
DocumentRoot /var/www/speedysoftware
<Directory /var/www/speedysoftware>
Options +FollowSymLinks
Options -Indexes
AllowOverride All
Require all granted
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
您可以看到http://www.speedy-soft.com/重定向到默认虚拟主机,这是正确的。配置有什么问题?
做出更改后,我通过 重新加载了设置sudo systemctl restart apache2
。
关于重定向,在这种情况下,我不想重定向。我希望它们被视为单独的网站,尽管它们指向同一个虚拟主机。在其他情况下,我会重定向,例如我重定向http://www.speedypedia.org/到http://www.speedypedia.info/,然后我重定向http://ww.speedysoftware.com/(或任何其他子域,包括http://speedysoftware.com/) 到http://www.speedysoftware.com/。
更新- 我检查了一下http://ww.speedysoftware.com/,http://wwww.speedysoftware.com/和http://speedysoftware.com/都指向正确的虚拟主机。只有http://www.speedysoftware.com/没有引导至正确的虚拟主机。
答案1
我写信给 DigitalOcean 支持部门(顺便说一句,他们的支持服务很棒),他们回复说:
该服务器是 Apache,因此您可以访问支持 -S 标志的 apachectl 命令来转储已解析的设置,其中包括建立它们的 vhosts 和配置。
我apachectl -S
从命令行运行并发现了问题:
*:80 is a NameVirtualHost
default server www.speedysoftware.com (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost www.speedysoftware.com (/etc/apache2/sites-enabled/000-default.conf:1)
...
由于我没有ServerName
在 中定义/etc/apache2/sites-available/000-default.conf
,因此 droplet 名称被占用,这就是问题所在。因此我ServerName www.speedy-soft.com
在此文件中添加了以下内容:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName www.speedy-soft.com
ServerAdmin [email protected]
DocumentRoot /var/www/general
<Directory /var/www/general>
Options +FollowSymLinks
Options -Indexes
AllowOverride All
Require all granted
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
然后重新启动 Apache。我apachectl -S
再次运行:
*:80 is a NameVirtualHost
default server www.speedy-soft.com (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost www.speedy-soft.com (/etc/apache2/sites-enabled/000-default.conf:1)
...
现在一切正常。
您可以在此页面查看更多详细信息: https://stackoverflow.com/questions/5474477/how-to-debug-an-apache-virtual-host-configuration