为什么Apache忽略了:80 vhost文件,而只在:443 vhost文件中匹配站点



我有两个vhost文件:一个是端口443上的所有站点管理员URLS,一个是80端口上的所有网站主URL。
apache知道这两个文件,如apachectl-S所示。net stat显示Apache正在侦听:80和:443

我现在正在使用我的MacBook中的主机文件。

但是,只有与443 vhosts文件中的vhosts行匹配的URL才能工作。否则,该站点将加载443 vhost文件中的第一个站点。(301永久移动(

我甚至尝试访问站点名称.com:80,但:80vhost文件中的站点URLS都没有被apache匹配。我错过了什么?

编辑:添加代码

Listen 1xx.2xx.3xx.4xx:80在httpd.conf 中定义

来自主站点URLS的vhost.conf(这个不工作(

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_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"

<Directory /var/www/site1.com/public>
Options FollowSymLinks
AllowOverride All
DirectoryIndex index.php
</Directory>
</VirtualHost>

从配置中,您似乎缺少以下

Listen 80

您可以将其添加到NameVirtualHost *:80的正下方

最新更新