Apache-2.4

Apache2 VirtualHost RedirectPermanent 和 AJP 代理衝突

  • November 5, 2021

事實證明,我的網站上由 ajp ProxyPass 控制的位置正在 VirtualHost 重定向之前進行處理,這引起了我的注意,因為Google已經在 ardownload.example.org 索引了 25k+ 頁面 - 我從未使用過並且不知道如何使用的子域他們開始走這條路。他們還有大約 12k 來自其他“不存在”的子域的頁面。我將問題追溯到這樣一個事實,即如果重定向到達 ajp 代理位置,則不尊重重定向。

期望的結果是所有子域都正確重定向到主站點,同時保留 url 和查詢字元串。

部分忽略重定向的目前虛擬主機:

<VirtualHost *:80>
   ServerName example.org
   ServerAlias *.example.org
   RedirectPermanent / https://www.example.org/
</VirtualHost>

目前位置代理導致錯誤。

<Location /tomcatlocation/>
    ProxyPreserveHost on
    ProxyPass ajp://127.0.0.1:8009/tomcatlocation/ retry=0
    ProxyPassReverse ajp://127.0.0.1:8009/tomcatlocation/
</Location>

類似foo.example.org/tomcatlocation/foo.example.org/tomcatlocation不會重定向的東西,而將其截斷為foo.example.org/tomcatlocatio將正確重定向。

我沒有運氣搜尋這方面的資訊。謝謝。

apache2ctl -S:

VirtualHost configuration:
*:80                   is a NameVirtualHost
        default server www.example.org (/etc/apache2/sites-enabled/000-default.conf:1)
        port 80 namevhost www.example.org (/etc/apache2/sites-enabled/000-default.conf:1)
        port 80 namevhost example.org (/etc/apache2/sites-enabled/000-default.conf:10)
                wild alias *.example.org
        port 80 namevhost example.net (/etc/apache2/sites-enabled/000-default.conf:15)

... other domains truncated ...

*:443                  is a NameVirtualHost
        default server example.org (/etc/apache2/sites-enabled/default-ssl.conf:2)
        port 443 namevhost example.org (/etc/apache2/sites-enabled/default-ssl.conf:2)
                alias www.example.org
        port 443 namevhost example.net (/etc/apache2/sites-enabled/default-ssl.conf:25)
                alias www.example.net
        
... other domains truncated ...


ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/lock/apache2" mechanism=fcntl 
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

我將Location指令移到VirtualHost:80VirtualHost重定向到的 :443 內,並且它按預期工作,因為它現在在重定向後處理。

引用自:https://serverfault.com/questions/1082652