为啥 Apache 忽略 :80 vhost 文件而只匹配 :443 vhost 文件中的站点?
Posted
技术标签:
【中文标题】为啥 Apache 忽略 :80 vhost 文件而只匹配 :443 vhost 文件中的站点?【英文标题】:Why is Apache ignoring :80 vhost file and only matching sites in :443 vhost file?为什么 Apache 忽略 :80 vhost 文件而只匹配 :443 vhost 文件中的站点? 【发布时间】:2021-08-12 04:54:26 【问题描述】:我有 2 个虚拟主机文件:1 个在端口 443 上包含我们所有站点的管理 URL,1 个在端口 80 上包含我们所有站点的主 URL。 apache 知道这两个文件,如 apachectl -S 所示。 net stat 显示 Apache 在 :80 和 :443 上监听
我现在正在使用 MacBook 上的主机文件。
但是,只有与 443 vhost 文件中的 vhosts 行匹配的 URL 才有效。否则该站点将加载 443 vhost 文件中的第一个站点。 (301 永久移动)
我什至尝试访问 site-name.com:80 - 但是 :80 vhost 文件中的所有站点 URL 都没有被 apache 匹配。我错过了什么?
编辑:添加代码
Listen 1xx.2xx.3xx.4xx:80
在 httpd.conf 中定义
来自 vhost.conf 的主站点 URL(这个不起作用)
NameVirtualHost *:80
<VirtualHost 1xx.2xx.3xx.4xx:80>
ServerAdmin admin@site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1.com/public
ServerName site1.com
ErrorLog /var/log/httpd/site1.com-error_log
CustomLog /var/log/httpd/site1.com-access_log common
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
<Directory /var/www/site1.com/public>
Options FollowSymLinks
AllowOverride All
DirectoryIndex index.php
</Directory>
</VirtualHost>
来自管理站点的 sslvhost.conf(这个正在运行)
Listen 443 https
NameVirtualHost *:443
<VirtualHost *:443>
DocumentRoot "/var/www/site1.com/public"
ServerName site1.com
ServerAlias site1.com admin-site1.com
LogLevel warn
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
SSLEngine on
SSLProtocol all -SSLv3 -SSLv2 -TLSv1 -TLSv1.1
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %SSL_PROTOCOLx %SSL_CIPHERx \"%r\" %b"
<Directory /var/www/site1.com/public>
Options FollowSymLinks
AllowOverride All
DirectoryIndex index.php
</Directory>
</VirtualHost>
【问题讨论】:
没有任何配置文件,很难说,有什么问题。至少发布相关部分。 【参考方案1】:从配置看来您缺少以下内容
Listen 80
您可以在NameVirtualHost *:80
下方添加它
【讨论】:
以上是关于为啥 Apache 忽略 :80 vhost 文件而只匹配 :443 vhost 文件中的站点?的主要内容,如果未能解决你的问题,请参考以下文章
Apache 2.2 忽略 VirtualDocumentRoot 虚拟主机?