我这里有以下情况:
我们将 apache 与内部服务器结合使用来生成动态内容,其中 apache 通过以下设置将进入网站的所有请求转发到内部服务器:
ProxyPass "/" http://127.0.0.1:8180/
ProxyPassReverse "/" http://127.0.0.1:8180/
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
反过来,内部服务器生成内容并将这些数据发送回 Apache,然后 Apache 将其发送到浏览器。
内部服务器还负责提供静态文件,通过读取它们、设置适当的内容类型并将答复发送回 Apache。
现在,问题是:我希望 Apache 提供一些永远不会改变的文件(例如徽标、一些图像、静态 javascript 等...),而无需将它们转发到内部服务器(速度考虑)。我该如何实现这一点?
答案1
从:https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass
像这样的事情应该可以做到:
DocumentRoot /path/to/files/
<Directory /path/to/files/>
Options All
AllowOverride All
Require all granted
</Directory>
ProxyPass /static !
ProxyPass "/" http://127.0.0.1:8180/
ProxyPassReverse "/" http://127.0.0.1:8180/
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
这应该在本地提供所有文件,/path/to/files/static
而不是代理它们。