在 Apache2 中使用别名绕过位置

在 Apache2 中使用别名绕过位置

我想知道如何使用 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/"

相关内容