我有一个在 http 和 https 上运行的网站(mysitedomain.com)。这是httpd.conf,
Listen 80
Listen 443
Listen 81
<VirtualHost *:80>
ServerName mysitedomain.com
DocumentRoot "c:/wamp/www/"
</VirtualHost>
<VirtualHost *:443>
ServerName mysitedomain.com
DocumentRoot "c:/wamp/www/"
SSLEngine on
SSLCertificateFile C:/SSL/S-WildCard.cer
SSLCertificateKeyFile C:/SSL/S-WildCard.key
SSLCACertificateFile C:/SSL/S_chain_cert.crt
</VirtualHost>
现在我想在 mysitedomain.com:81 上运行另一个网站,所以我补充说,
<VirtualHost *:81>
ServerName mysitedomain.com:81
DocumentRoot "c:/wamp/www2/"
</VirtualHost>
但这不起作用。有什么我想念的吗?
确认端口已打开后,尝试删除虚拟主机服务器名称中的端口,如下所示:
您已经定义了要监听的端口号。要访问从 www2 目录提供的域,请在 url 中包含端口号
mysitedomain.com:81
出于某种原因,如果您不能使用单独的主机名或 IP 地址(在我的情况下是由愚蠢的路由器引起的),那么定义 VirtualHost 的唯一变量就是端口号。如果有两个相同名称和 IP 地址的 VirtualHost,则必须在 /etc/apache2/apache2.conf 中明确设置 DefaultRuntimeDir:
DefaultRuntimeDir /var/run/apache2
以这种方式工作让我可以在开发小型网站期间使用 git 分支和更新后挂钩来管理功能分支。