Apache ajp 反向代理將特定頁面重定向到 https
我有執行和重定向到後端tomcat伺服器的apache負載平衡反向代理。我還為HTTPS (SSL) 創建了一個單獨的虛擬主機以及HTTP虛擬主機。以下**http://my.domain.net/>**和**<https://my.domain.net/**虛擬主機都可以單獨訪問並正常工作。
mod_proxy_ajp
http ##:
<VirtualHost *:80> ServerName my.domain.net ProxyRequests On ProxyVia On ProxyPreserveHost On ProxyErrorOverride On ProxyStatus On <Proxy balancer://ClusterDomain> Order deny,allow Allow from all BalancerMember ajp://192.168.1.22:8009 route=web1 redirect=web2 ttl=300 timeout=5 retry=60 BalancerMember ajp://192.168.1.23:8009 route=web2 redirect=web1 ttl=300 timeout=5 retry=60 BalancerMember ajp://192.168.1.21:8009 route=balancer1 status=+H disablereuse=on ProxySet lbmethod=byrequests ProxySet stickysession=JSESSIONID|jsessionid </Proxy> ProxyPass /errors ! ProxyPass /balancer-manager ! ProxyPass / balancer://ClusterDomain/ nofailover=off ProxyPassReverse / balancer://ClusterDomain/ # Balancer-manager for ajp proxy nodes management <Location /balancer-manager> SetHandler balancer-manager Order deny,allow Allow from all </Location> #Recording virtual host logs LogLevel Debug CustomLog /var/log/apache2/my.domain.com-access.log combined ErrorLog /var/log/apache2/my.domain.com-error.log </VirtualHost>
https ## :
NameVirtualHost 123.123.123.123:443 <VirtualHost 123.123.123.123:443> ServerName my.domain.net SSLEngine on SSLProxyEngine On SSLCertificateFile /etc/ssl/myapp/server.crt SSLCertificateKeyFile /etc/ssl/myapp/server.pem ProxyRequests On ProxyVia On ProxyPreserveHost On ProxyErrorOverride On ProxyStatus On <Proxy balancer://ClusterDomain> Order deny,allow Allow from all BalancerMember ajp://192.168.1.22:8009 route=web1 redirect=web2 ttl=300 timeout=5 retry=60 BalancerMember ajp://192.168.1.23:8009 route=web2 redirect=web1 ttl=300 timeout=5 retry=60 BalancerMember ajp://192.168.1.21:8009 route=balancer1 status=+H disablereuse=on ProxySet lbmethod=byrequests ProxySet stickysession=JSESSIONID|jsessionid </Proxy> ProxyPass /errors ! ProxyPass / balancer://ClusterDomain/ nofailover=off ProxyPassReverse / balancer://ClusterDomain/ BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost>
如果有人已經問過這個問題但沒有找到,我在**SF中進行了搜尋。**他們中的大多數人詢問如何完全從 http 重定向到 https,但在我的情況下,它有點不同,因為我只希望將特定頁面重定向到安全頁面,但在嘗試使用 http 時它不應該完全重定向到 https。
如何根據上述虛擬主機將特定的 http 頁面(讓http://my.domain.net/register)重定向到安全的 https(https://my.domain.net/register )頁面?是否可以使用 ajp 代理?我需要在單獨訪問時同時訪問 http 和 https,但只有特定頁面應該被強制重定向到安全頁面。我可以這樣做嗎?
更新 1
我真的很不擅長理解 apache 重寫規則!!!。
正如
KM01
我嘗試重寫規則所建議的那樣。即使在虛擬主機中附加以下規則以進行 https 重定向後,只需在訪問http://my.domain.net/register時重定向到http頁面即可簡單地忽略規則。
rewrite
規則,RewriteRule ^/register/$ https://my.domain.net/register [R=301]
(或者)
我也試過
Redirect
RedirectMatch ^/register/$ https://my.domain.net/register
更新 2
經過一段時間的嘗試,有了一些基本的想法!
我得到了兩個
rewrite
和redirect
工作!關鍵是從代理重定向中排除頁面(/註冊),應該重定向到安全的 https 頁面!。首先
Redirect
是這樣工作的,ProxyPass /register ! RedirectMatch /register https://my.domain.net/register #(or) RedirectMatch permanent /register https://my.domain.net/register
並且
Rewrite
,即使
/register
從代理中排除後也對我不起作用。RewriteEngine on
儘管啟用了重寫模組,但我不得不使用。附加以下工作,
ProxyPass /register ! RewriteEngine on RewriteRule ^/register/$ https://my.domain.net/register [R=301]
我不知道這是否是正確的方法,但它在KV01的幫助下工作
感謝KV01!!!
您可以通過重寫/重定向來實現您想要做的事情。在你的虛擬主機配置中這樣的東西應該可以工作(請先在測試伺服器中測試,然後再投入生產):
#requires mod_rewrite RewriteRule ^/register$ https://my.domain.com/register [R=301]
這條規則說只重定向那些開始(
^
)和結束($
)以及介於兩者之間的內容/register
。這不會重定向任何其他路徑,只是這個。高溫高壓