2017-10-09 144 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

相關問題