2017-10-09 201 views
0

我将SSL设置为我的Web应用程序。此应用程序的标准端口是8080,而SSL端口是8443.我的Apache httpd配置有问题。我想下面列出的所有网址重定向:如何使用Apache httpd重定向两个不同的端口?

http://1.2.3.4:8080 
https://1.2.3.4:8080 
http://1.2.3.4:8443 

这个网址:

https://1.2.3.4:8443 

我改变的httpd.conf这样:

Listen 1.2.3.4:8080 

<VirtualHost *:8080> 
    ServerName 1.2.3.4 
    Redirect "/" "https://1.2.3.4:8443" 
</VirtualHost> 

它工作正常的列出的第一个URL上面,但它不适用于其他网址。我尝试了不同的配置,但他们没有工作。有谁能帮我解决这个问题吗?

回答

1
https://1.2.3.4:8080 
http://1.2.3.4:8443 

如果正在供应端口8080和HTTPS(SSL)HTTP是在8443然后既不上述URL的将是为了能够触发重定向访问。 (?!)

在你的配置HTTP是只有端口8080和HTTPS是只有端口8443

参考:在httpd.conf
https://serverfault.com/questions/359461/apache-answer-both-http-and-https-on-the-same-port

+0

好吧,你是对的,我明白了。但是,有没有什么办法来重定向通过'http://1.2.3.4:8443'到'的https://10.200.200.91:8443'时的httpd端口8080上监听? –

+0

HTTP重定向仅在请求在服务器上解析后发生。如果HTTP正在侦听端口8080,那么像“http://1.2.3.4:8443”这样的请求根本就不会正确解析,并且浏览器会超时。为了做到你需要什么,你需要Apache来回答HTTP端口上8080 _and_ 8443(已与SSL共享?) - 这是不可能与Apache AFAIK。我认为这可能是可能的某种前端代理,可以拦截和转移此类请求? – MrWhite

0

配置的mod_rewrite实现这样的一个重定向

例如:

LoadModule rewrite_module modules/mod_rewrite.so 
RewriteEngine on 
<VirtualHost 1.2.3.4:8080> 
    <IfModule mod_rewrite.c> 
    RewriteCond %{SERVER_PORT} !^8443$ 
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [L,R] 
    </IfModule> 
</VirtualHost> 

LoadModule rewrite_module modules/mod_rewrite.so 
RewriteEngine on 
RewriteCond %{SERVER_PORT} =8080 
RewriteRule ^(.*) https://%{HTTP_HOST}:8443/$1 [L,R] 
+0

第一个示例代码不适用于我。第二个和我第一篇文章中的代码一样。 –

+0

您在这里所做的只是实现标准的HTTP到HTTPS(临时)重定向,这不是OP所要求的。 – MrWhite

相关问题