Apache httpd ProxyPass 和 ProxyRemote

当我们的client无法直接access backend_server的时候,我们通常在webserver端有如下配置。

1
2
client->backend_server NG
client->webserver->backend_server OK
1
2
ProxyPass /example https://backend_server/example
ProxyPassReverse /example https://backend_server/example

这样,当client访问https://webserver/example的时候,我们获取到的其实就是backend_server/example的内容。

需要注意的是,从client的角度是无从得知这个内部的Forward的。因此用户访问https://webserver/example的时候,总是返回通常的200 response。

这点和用Redirect的Module是不一样的。

但是,如果当我们的webserver也无法直接访问backend_server的时候改怎么办呢?

答案是使用ProxyRemote

1
2
3
ProxyRemote https://backend_server/ https://proxy_server:port
ProxyPass /example https://backend_server/example
ProxyPassReverse /example https://backend_server/example

我们在设置ProxyPass之前事先指定哪些Forward的Request需要通过Proxy获取便可。

如果你觉得本文对你有帮助,请给我点赞助。