关于正向代理和反向代理的区别,这里就不提了。
使用 ProxyRequests 指令即可激活正向代理。
使用 ProxyPass 指令即可激活反向代理(在 RewriteRule 中使用[P]标记也可以)。在 2.2.5 版本以后,引入了 ProxyPassMatch 指令,区别是支持正则。
另外,日志也很有意思。由于会发起另外一个请求,在 accesslog 中,会先记录这个另外的请求,然后才记录原始请求。即日志记录是一个入栈的过程,先进后出。
例如,配置是:
ProxyPassMatch ^/cookie.html$ http://localhost/test
访问 cookie.html 时,会发起对 test 目录下的同名文件的请求,并将其返回。此时,accesslog 中记录的顺序是:
127.0.0.1 - - [time] "GET /test/cookie.html HTTP/1.1" 304 -
originalIP - - [time] "GET cookie.html HTTP/1.1" 304 -
对用户而言,反向代理是透明的。但是 rewrite 不一样,用户能收到 302 跳转。