首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么HTTP到HTTPS重定向不能工作?

为什么HTTP到HTTPS重定向不能工作?
EN

Server Fault用户
提问于 2015-07-22 14:46:10
回答 1查看 171关注 0票数 0

我一直在阅读关于这个问题的所有讨论,并决定在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

代码语言:javascript
复制
------------ 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第二次请求添加了一节

代码语言:javascript
复制
# netstat -ant | grep 80
tcp        0      0 :::80                       :::*                        LISTEN
代码语言:javascript
复制
# 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重写根本不起作用。

代码语言:javascript
复制
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

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName ourdomain.com
    ServerAlias ourdomain.com *.ourdomain.com
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
</VirtualHost>
EN

回答 1

Server Fault用户

发布于 2015-07-25 14:26:45

对于第一个问题,请尝试将ServerAlias变量设置为在所有虚拟主机部分包含以下内容。

代码语言:javascript
复制
ServerAlias ourdomain.com *.ourdomain.com

参考文献:http://httpd.apache.org/docs/2.4/mod/core.html#serveralias

根据启动错误,上一次运行似乎没有正确关闭,即netstat和lsof输出显示它仍然在运行并侦听端口80。在尝试重新启动之前,请确保httpd没有运行,即在运行lsof -iTCP:80时不应该看到httpd的任何输出。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/707659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档