首页 文章

反向代理模式Apache拦截或捕获来自后端服务器的302响应并在内部重定向,而不向客户端发送302响应

提问于
浏览
5

有没有人知道如何告诉Apache,在反向代理模式下,拦截或捕获来自后端服务器的302(或30x)响应并在内部重定向而不将30x响应发送回客户端?最终,响应被重定向到的后端服务器将无法从外部访问(或未在Apache conf中列出) .


我的情况:
我有web_server_A和web_server_B侦听端口6666和7777.这些端口无法从外部访问,但可以从内部访问 .
我最终可以更改web_server_A的行为,但不能更改web_server_B的行为 .
Apache正在侦听端口80/443,可从外部访问,并充当反向代理,将发送到web_server_ {A,B} .example.com的请求发送到web_server_ {A,B}

客户端向Apache请求web_server_A.example.com/foo . Apache将请求代理到web_server_A,后者生成一些内容,然后将指向web_server_B.example.com/bar/secret_token的HTTP / 302响应发送回Apache . Apache向客户端发回302响应,然后向Apache发送web_server_B.example.com/bar/secret_token的HTTP请求 . Apache将请求代理到web_server_B,后者回复了一些内容(通常会发回一些大文件) .


我的问题:
我不希望从外面访问web_server_B .

web_server_A可以向web_server_B发出请求,然后从web_server_B发回答案,而不发出302回复 . 但是,web_server_B的答案可能需要一些时间,可能会非常大,而web_server_A不应该在任何请求上花费太多时间(它无法处理大文件) .


所以我想到了一个“302捕手”功能,如果现有的话会很好,但到目前为止还没有在网上为如何做到这一点提供任何资金 . 任何的想法?

2 回答

  • 0

    作为反向代理,Apache将无法“阻止回复” . 这不是审查员 . 不过,你可以自己写这样的东西 .

  • 0

    使用ProxyPassReverse指令,web_server_A将修改web_server_B发送的Location头,因此客户端将不会了解他 .

    要从上游服务器捕获重定向,您还可以编辑位置标头 . 例如“Header unset Location”将显示apache默认的30X错误页面

相关问题