apache - 为什么 Apache 忽略 :80 vhost 文件而只匹配 :443 vhost 文件中的站点?
问题描述
我有 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 中定义
来自主站点 URL 的 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
推荐阅读
- java - 如何清除谷歌地图中的位置标记
- django - 在 BinaryField 的模板中显示文档
- bash - 在目录中播放视频之间添加 n 秒的延迟
- typescript - Typescript中带有条件的对象接口
- sql - select concat(first_name,' ',last_name) as "full name" from employees---如何在oracle中连接2列时带来空间---
- php - 如何使用单个按钮单击通过 php 脚本生成的所有数据库按钮?
- visual-studio - 当我在 CRM 上上传插件时,Microsoft.IdentityModel.Clients.ActiveDirectory 在系统中工作正常,它显示错误
- javascript - 这些 ArrayToMap 函数用法中哪一个在性能方面更好?
- javascript - 如何在 thymeleaf 和 spring boot 中提交表单并通过一些客户端验证 javascript?
- java - 如何从 JavaFX Media 对象获取媒体详细信息(标题、专辑等)并将详细信息添加到 ObservableList?