我一直在阅读关于这个问题的所有讨论,并决定在httpd.conf文件中使用重定向方法,而没有运气。所以我回到了这群知识渊博的人群中。
我们有一个服务,我们称之为"host1“(基于https ),运行在CentOS6.x上,我们决定在那里添加我们的网站,以利用购买的通配符SSL证书,该证书在https中连接时可以很好地处理两个SSL访问。
不幸的是,当用户输入ourdomain.com、www.ourdomain.com或使用http表示ourdomain.com或www.ourdomain.com时,我们的网站无法访问和超时。对于ourdomain.com、www.ourdomain.com和host1.ourdomain.com的https,一切都很好。
在下面,您将发现httpd.conf和ssl.conf都被截断到虚拟主机区域,并隐藏了我们的具体细节。
使用此配置,我从httpd获得以下错误:
这一次不会再发生了,谢谢你的提示Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
------------ Start httpd.conf ------------------
# >>httpd configuration truncated down to Virtual Hosts
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.ourdomain.com
Redirect permanent / https://www.ourdomain.com/
</VirtualHost>
------------ End httpd.conf ------------------
------------ Start ssl.conf to manage 443 and ssl certificates------------------
# >>SSL Configuration Truncated up to Listen 443 and Virtual Hosts
Listen 443
#Listen for virtual host requests on all IP addresses
NameVirtualHost *:443
# >>SSL Config ...
##
## SSL Virtual Host Context
##
<VirtualHost *:443>
DocumentRoot /var/www/html/dir1
ServerName host1.ourdomain.com
ServerAlias host1.ourdomain.com
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
# >>SSL Certificates Config ... Truncated
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html/dir2
ServerName ourdomain.com
ServerAlias ourdomain.com www.ourdomain.com
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
# >>SSL Certificates Config ... Truncated
</VirtualHost>
------------ End ssl.conf ------------------问题在哪里??我不想使用.htaccess,因为我希望避免AllowOverride影响我们的host1服务。
谢谢。
奥利
- ngn为netstat第二次请求添加了一节
# netstat -ant | grep 80
tcp 0 0 :::80 :::* LISTEN# lsof -iTCP:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 24331 root 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24334 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24335 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24336 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24337 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24338 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24339 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24340 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 24341 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 25323 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 25325 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)
httpd 25326 apache 5u IPv6 5381394 0t0 TCP *:http (LISTEN)下面是httpd的-S结果,从httpd的角度来看,这一切看起来都很好。但是连接到'http : //ourdomain.com‘或'http : //www.ourdomain.com’在所有浏览器中都会中断.用https重写根本不起作用。
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server ourdomain.com (/etc/httpd/conf/httpd.conf:1032)
port 80 namevhost ourdomain.com (/etc/httpd/conf/httpd.conf:1032)
alias ourdomain.com
wild alias *.ourdomain.com
*:443 is a NameVirtualHost
default server host1.ourdomain.com (/etc/httpd/conf.d/ssl.conf:40)
port 443 namevhost host1.ourdomain.com (/etc/httpd/conf.d/ssl.conf:40)
alias host1.ourdomain.com
port 443 namevhost ourdomain.com (/etc/httpd/conf.d/ssl.conf:95)
alias ourdomain.com
alias www.ourdomain.com
Syntax OK端口80的httpd.conf
<VirtualHost *:80>
ServerName ourdomain.com
ServerAlias ourdomain.com *.ourdomain.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>发布于 2015-07-25 14:26:45
对于第一个问题,请尝试将ServerAlias变量设置为在所有虚拟主机部分包含以下内容。
ServerAlias ourdomain.com *.ourdomain.com参考文献:http://httpd.apache.org/docs/2.4/mod/core.html#serveralias
根据启动错误,上一次运行似乎没有正确关闭,即netstat和lsof输出显示它仍然在运行并侦听端口80。在尝试重新启动之前,请确保httpd没有运行,即在运行lsof -iTCP:80时不应该看到httpd的任何输出。
https://serverfault.com/questions/707659
复制相似问题