【问题标题】:How can I set up a reverse proxy with mod_proxy without redirecting?如何在不重定向的情况下使用 mod_proxy 设置反向代理?
【发布时间】:2010-10-29 10:51:17
【问题描述】:

如何使用 mod_proxy 设置反向代理而不重定向到另一个服务器或 IP?这将是一个虚拟主机环境。我想这样做的原因是 mod_proxy 处理与客户端浏览器的通信,从而释放 Web 服务器进程来服务下一个请求,而不是提供客户端的浏览器。这在将 mod_php 等语言模块与 MPM Prefork 一起使用时尤其重要。我想要实现的流程是: 1. 流量解析到端口 80 上的 www.mydomain.com。 2. 代理向 Web 服务器发送请求。 3. Web 服务器将应答发送回代理并断开与代理的连接。 4. 代理向客户端浏览器提供数据。

一旦工作正常,我想将 nginx 添加到相同的 IP 地址,但用于端口 81 和对同一服务器上 nginx 的代理图像请求。我不希望 nginx 处理代理,也不想要 FCGI 任何东西。我希望我的标准 Apache mod_rewrite 和 .htaccess 能够正常工作。

非常感谢!

【问题讨论】:

  • 我认为 proxypassreverse 是您缺少的部分。

标签: apache .htaccess mod-rewrite reverse-proxy mod-proxy


【解决方案1】:

只是重定向到不同端口上的本地主机?在 8080 端口上托管您的应用程序,并使用 mod_proxy 转发请求:

ProxyPass /foo http://localhost:8080/foo
ProxyPassReverse /foo http://localhost:8080/foo

如果您有正在处理请求的应用程序服务器并且您希望在一台机器上组合多个实例,这可能会很有帮助。每个应用服务器可以使用一个端口。

我不知道它是否真的会比直接使用mod_php 更快。代理请求也会增加开销。

【讨论】:

  • 我认为这很完美。我没想过让 Apache 监听多个端口。它是否减轻任何负载取决于 mod_php 进程实际上花费了多少时间来馈送浏览器以及保持活动的影响是什么。如果大多数请求都适合套接字缓冲区,那么 Apache 无论如何都不会进行“婴儿坐”通信,内核是,我不能做得比这更好。代理还允许我尝试使用 nginx 获取静态内容。这可能会有所帮助。 PHP 缓存运行良好。在这些调整之后,它归结为 lingerd、缓冲区、CPU 和 RAM。
【解决方案2】:

确保你也使用加载这 2 个模块

LoadModule proxy_module bin/mod_proxy.so 
LoadModule proxy_http_module bin/mod_proxy_http.so

ProxyPass /TeamCity http://localhost/TeamCity
ProxyPassReverse /TeamCity http://localhost/TeamCity

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 2016-12-26
    • 1970-01-01
    • 2011-10-30
    • 2012-06-03
    相关资源
    最近更新 更多