【问题标题】:Handling POST requests using Apache's mod_proxy使用 Apache 的 mod_proxy 处理 POST 请求
【发布时间】:2026-01-12 07:45:01
【问题描述】:

我目前在同一个 Apache 服务器上托管 2 个 Web 应用程序。我们就叫他们 A 和 B。我使用 JSONP 从 A 到 B 进行跨域 ajax 调用(我需要来自 B 的一些数据)。当我的请求太大而 GET 根本不起作用时,这种方法的问题变得很明显;我需要使用 POST 请求。

我安装了 mod_proxy 并将我的 Apache Web 服务器配置为充当反向代理,如下所示:http://bit.ly/rpeWJI。这与 GET 请求完美配合,但我仍然无法让 POST 请求正常工作。有人能帮我吗?

附带说明一下,我正在为我的 Web 应用程序使用 Pylons Web 框架。

【问题讨论】:

  • 确认!很抱歉这篇文章.....我的网址调用不好。程序员错误。
  • 那么,您能否让 POST 仅与 Apache 一起工作?你是怎么做到的?谢谢。
  • 嗨 spli19,我今天才看到你的帖子。这是去年。我最近不得不再次做这种行为,并意识到实际上有一种更简单、更好的方法来处理 POST 请求。我强烈建议使用 Requests 模块向另一台服务器发出 post 请求。 requests 模块可以在这里找到,它超级好用:docs.python-requests.org/en/latest/index.html
  • 谢谢马克!我会检查一下。

标签: apache reverse-proxy mod-proxy


【解决方案1】:

您在 Apache 中启用了 mod_security 吗?

我在调试 HTTP POST 请求对我的反向代理失败的原因时遇到了您的帖子。 (他们收到了 403 响应)。

这让我们的服务器使用了带有 OWASP 设置的 mod_security。监控错误日志,然后将application/json 添加到已批准类型列表中即可解决。

出于类似原因,我还必须允许 PUT 请求。

【讨论】:

    【解决方案2】:

    我可以建议使用nginx 而不是 Apache。 Here 是一个示例配置:

    http {
        proxy_cache_path  /data/nginx/cache  levels=1:2    keys_zone=STATIC:10m
                                            inactive=24h  max_size=1g;
        server {
            location / {
                proxy_pass             http://1.2.3.4;
                proxy_set_header       Host $host;
                proxy_cache            STATIC;
                proxy_cache_valid      200  1d;
                proxy_cache_use_stale  error timeout invalid_header updating
                                      http_500 http_502 http_503 http_504;
            }
        }
    }
    

    【讨论】:

    • 啊,谢谢。我会在下一个 Web 应用程序中考虑这个。
    • 我想试用 nginx 已经有一段时间了。看起来很整洁。
    • 好吧,不是每个人都能切换到 nginx 的好东西,问题是关于 Apache。所以这样的答案非常令人困惑,当然也没有帮助。