我想知道如何使用 Apache 作为特定路径的反向代理以及其子路径的本地服务器。
对于特定位置,我使用 Apache 作为反向代理(https://my.server.com/my-tools
):
<Location /my-tools>
Order allow,deny
Allow from all
ProxyPass http://10.1.1.11:3101/my-tools
ProxyPassReverse http://10.1.1.11:3101/my-tools
</Location>
问题是,对于它的资产,我想使用本地服务器(https://my.server.com/my-tools/images/
)。我尝试添加别名,但没有成功:
Alias /my-tools/images/ /home/myself/public/images/
<Directory /home/myself/public/images/>
Order allow,deny
Allow from all
</Directory>
我也尝试添加这个,但是也没有用:
<Location /my-tools/images/>
SetHandler None
</Location>
https://my.server.com/my-tools/images/myimage.png
例如,当我输入时,它会不断重定向到远程服务器。
答案1
有一个直接的例子mod_proxyProxyPass
文档:
该
!
指令在你不想反向代理子目录的情况下很有用,例如<Location "/mirror/foo/"> ProxyPass "http://backend.example.com/" </Location> <Location "/mirror/foo/i"> ProxyPass "!" </Location>
在你的情况下,情况是这样的:
<Location "/my-tools/images">
ProxyPass "!"
Alias "/home/myself/public/images"
</Location>
<Location "/my-tools/">
ProxyPass http://10.1.1.11:3101/my-tools/
ProxyPassReverse http://10.1.1.11:3101/my-tools/
</Location>
或者使用其他语法:
ProxyPass "/my-tools/images" "!"
Alias "/my-tools/images" "/home/myself/public/images"
ProxyPass "/my-tools/" "http://10.1.1.11:3101/my-tools/"
ProxyPassReverse "/my-tools/" "http://10.1.1.11:3101/my-tools/"