如何使用Apache httpd重定向两个不同的端口?

时间:2017-10-09 13:20:36

标签: apache .htaccess ssl httpd.conf

我将SSL设置为我的Web应用程序。此应用程序的标准端口为8080,SSL端口为8443.我遇到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>

它适用于上面列出的第一个网址,但不适用于其他网址。我尝试了不同的配置,但它们没有用。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

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

如果在端口8080上提供HTTP并且HTTPS(SSL)在8443上,则上述URL都不可访问,以便能够触发重定向。 (?!)

在您的配置中,HTTP 端口8080,HTTPS仅 端口8443。

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

答案 1 :(得分:0)

在httpd.conf中配置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]