问题: 我有一个别名目录,用于获取静态数据的url子路径。我可以用gzip压缩它。但是,当我将代理添加到其他路径并为静态数据添加例外时,压缩将停止。
环境
httpd.conf中的密钥配置
<!DOCTYPE html>
<html>
<style>
.item {
flex: 1 1 25%;
margin: 20px 10px;
text-align: center;
}
.container {
padding: 60px;
display: flex;
flex-wrap: wrap;
align-items: flex-start;
}
</style>
<head>
<title>Page Title</title>
</head>
<body>
<div class="container">
<div class="item">
<img src="../photos/example.jpg" alt="image for testing">
</div>
<div class="item">
<img src="../photos/example.jpg" alt="image for testing">
</div>
<div class="item">
<img src="../photos/example.jpg" alt="image for testing">
</div>
<div class="item">
<img src="../photos/example.jpg" alt="image for testing">
</div>
<div class="item">
<img src="../photos/example.jpg" alt="image for testing">
</div>
<div class="item">
<img src="../photos/example.jpg" alt="image for testing">
</div>
</div>
</body>
</html>
使用此配置和SRVROOT下的“ static ”文件夹,我放置了一个文件 bundle.js (3M数据)。在http://localhost/static/bundle.js上轮询此文件可以通过gzip压缩为我提供600K的下载量。一切都好
现在进行更改。该应用程序的默认路径需要反向代理到另一个应用程序,而apache只是在提供静态内容。
<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>
extra / proxy-html.conf文件内容
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>
这仍然允许我访问我的静态数据,只是现在还没有进行gzip压缩。我不知道这是不是Apache的错误,还是有更好的配置方式。
这是我的要求:
答案 0 :(得分:0)
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>