[英]Apache 2.4 compression not working when using alias and reverse proxy
問題:我有一個用於提取靜態數據的url子路徑的別名目錄。 我可以得到這個gzip壓縮就好了。 但是,當我將代理添加到其他路徑並為我的靜態數據添加例外時,壓縮會停止。
環境
httpd.conf中的密鑰配置
<Directory "${SRVROOT}/static">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# I have used FilterProvider as well an know this just does javascript at the moment
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
SetOutputFilter DEFLATE
<IfModule alias_module>
Alias "/static" "${SRVROOT}/static"
ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
</IfModule>
使用此配置和SRVROOT下的“ 靜態 ”文件夾,我放置一個文件bundle.js (3M數據)。 在http://localhost/static/bundle.js查詢此文件,可以通過gzip壓縮下載600K。 都好
現在換了。 應用程序的默認路徑需要將代理轉發到另一個應用程序,而apache只是提供靜態內容。
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>
extra / proxy-html.conf文件內容
#default proxy stuff above...
ProxyRequests off
ProxyPass / http://localhost:5000/
#ProxyPass /static/ /
ProxyHTMLURLMap http://localhost:5000/ /
<Location />
ProxyPassReverse /
ProxyHTMLEnable On
ProxyHTMLURLMap / /
RequestHeader unset Accept-Encoding
</Location>
<Location /static/ >
ProxyPass !
</Location>
這仍然允許我點擊我的靜態數據,只是現在沒有發生gzip壓縮。 我不知道這是否是apache中的錯誤,或者是否有更好的方法來配置它。
這是我的要求:
似乎RequestHeader取消設置Accept-Encoding正在流入另一個Location定義。 這似乎不應該是預期的行為。 這個問題似乎有兩個解決方案。
刪除ProxyURLMap的示例
ProxyRequests off
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
<Location /static/ >
ProxyPass !
</Location>
#Do not use this anymore
#<Location />
# ProxyPassReverse /
# ProxyHTMLEnable On
# ProxyHTMLURLMap / /
# RequestHeader unset Accept-Encoding
#</Location>
使用INFLATE; DEFLATE的示例
ProxyRequests off
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
<Location />
ProxyPassReverse /
ProxyHTMLEnable On
ProxyHTMLURLMap / /
SetOutputFilter INFLATE;DEFLATE
</Location>
<Location /static/ >
ProxyPass !
</Location>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.