如何使用ApacheHTTPD重定向两个不同的端口?
我将SSL设置到我的web应用程序。此应用程序的标准端口为8080,SSL端口为8443。我对apachehttpd配置有问题。我想重定向下面列出的所有URL:如何使用ApacheHTTPD重定向两个不同的端口?,apache,.htaccess,ssl,httpd.conf,Apache,.htaccess,Ssl,Httpd.conf,我将SSL设置到我的web应用程序。此应用程序的标准端口为8080,SSL端口为8443。我对apachehttpd配置有问题。我想重定向下面列出的所有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>
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>
听1.2.3.4:8080
服务器名1.2.3.4
重定向“/”https://1.2.3.4:8443"
对于上面列出的第一个url,它可以正常工作,但对于其他url则不行。我尝试了不同的配置,但都不起作用。有人能帮我解决这个问题吗
如果HTTP服务于端口8080,而HTTPS(SSL)服务于8443,则上述两个URL都无法访问以触发重定向。(?!)
在您的配置中,HTTP仅为端口8080,HTTPS仅为端口8443
参考资料:在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>
好吧,你说得对,我明白。但是有没有办法重定向
http://1.2.3.4:8443
至https://10.200.200.91:8443
当httpd在端口8080上侦听时,HTTP重定向仅在服务器上解析请求后发生。如果HTTP正在侦听端口8080,则会发出类似http://1.2.3.4:8443
根本无法正确解析,浏览器将超时。为了满足您的要求,您需要Apache在端口8080和8443(已与SSL共享?)上对HTTP进行应答—这在Apache AFAIK中是不可能的。我认为这可能与某种前端代理有关,它可以拦截和转移此类请求?第一个示例代码对我不适用。第二个与我在第一篇文章中的代码所做的相同。您在这里所做的只是实现一个标准的HTTP到HTTPS(临时)重定向,这不是OP所要求的。
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]