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

How to redirect two different ports using Apache httpd?

我为我的 Web 应用程序设置了 SSL。此应用程序的标准端口是 8080,SSL 端口是 8443。我的 Apache httpd 配置有问题。我想重定向下面列出的所有 url:

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

对此url:

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,但不适用于其他 url。我尝试了不同的配置,但它们没有用。谁能帮我解决这个问题?

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

如果 HTTP 在端口 8080 上提供服务并且 HTTPS (SSL) 在端口 8443 上提供服务,那么上述两个 URL 都将无法访问以触发重定向。 (?!)

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

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

在您的 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}/ [L,R]
  </IfModule>
</VirtualHost>

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