我想Location
在我的 Apache 配置中设置几个标签。例如:/image
、/file
,/audio
并将其传递给localhost:port/path
。现在我将其用于/image
:
<Location /image>
RewriteEngine on
Options +MultiViews +FollowSymLinks
AllowOverride All
ProxyPreserveHost On
ProxyPass "http://localhost:PORT/image"
ProxyPassReverse "http://localhost:PORT/image"
</Location>
我是否必须为每个参数编写这段代码?或者有什么捷径吗?
谢谢!
答案1
<Location /image> RewriteEngine on Options +MultiViews +FollowSymLinks AllowOverride All ProxyPreserveHost On ProxyPass "http://localhost:PORT/image" ProxyPassReverse "http://localhost:PORT/image" </Location>
我是否必须为每个参数编写这段代码?
否。该RewriteEngine
指令不会执行任何操作,当您不映射到本地文件系统上的资源时,该指令和Options
该AllowOverride
指令都没有任何意义。这些选项受控制,需要由您使用该指令将请求转发到的“远程”网络服务器进行设置ProxyPass
。
由于这些指令毫无用处,因此您无需使用 Location 括号来设置它们,而可以使用内联ProxyPass
无论如何都是推荐的语法。
这将语法简化为仅需几行:
ProxyPreserveHost On
ProxyPass "/image" "http://localhost:PORT/image"
ProxyPassReverse "/image" "http://localhost:PORT/image"
ProxyPass "/file" "http://localhost:PORT/file"
ProxyPassReverse "/file" "http://localhost:PORT/file"
Apache httpd 确实提供了Include
指令来维护一个单一的配置片段,其中包含您想要在不同位置、VirtualHost、Location、Directory 块中逐字包含的设置,而无需一次又一次地复制相同的行。