【问题标题】:Allowing AJAX requests to service behind nginx proxy based on request_method基于 request_method 允许 AJAX 请求在 nginx 代理后面服务
【发布时间】:2013-04-13 10:31:53
【问题描述】:

我是 Nginx 的新手,如果我很迟钝,请原谅我。我有一个位于 nginx 代理后面的服务,我正在使用 auth_basic 来防止任何人目前能够访问它。我想允许 Angular 应用程序访问此服务,但我想控制允许谁执行特定请求方法(GET、POST、DEL、OPTIONS),并且使用 auth_basic 似乎不是最好的选择,因为我没有'不想将登录名/密码硬编码到 JS 中(duh)。我能弄清楚如何做到这一点的唯一方法是说:

if ($request_method = OPTIONS)
{ 
        proxy_pass_header Access-Control-Allow-Origin *;
        proxy_pass_header Access-Control-Allow_Methods GET, OPTIONS;
        etc...
}

此时,我将允许来自任何人的 GET 和 OPTIONS 请求,但我想将 POST、DEL 限制为仅来自某些位置(例如内部或来自受信任的 IP)。但是,目前,如果我将 proxy_pass_header 放入该块中,则表示该指令是不允许的。我已经看到人们在这样的 if 块中使用 add_header 的其他示例,所以我很困惑为什么这不起作用。

首先,这是不是最好的做事方式,如果不是,有人有其他建议吗?如果这是处理事情的最佳方式,那么我在这里做错了什么?

任何帮助将不胜感激。我发现 nginx 文档非常混乱。

【问题讨论】:

    标签: ajax nginx angularjs cors


    【解决方案1】:

    您可以使用来自ngx_http_access_moduledeny/allow 指令。

    location / {
        deny  192.168.1.1;
        allow 192.168.1.0/24;
        allow 10.1.1.0/16;
        allow 2001:0db8::/32;
        deny  all;
    }
    

    http://nginx.org/en/docs/http/ngx_http_access_module.html

    【讨论】:

      猜你喜欢
      • 2017-01-02
      • 1970-01-01
      • 2013-05-30
      • 2019-06-20
      • 2013-01-01
      • 2017-08-24
      • 2017-03-15
      • 2018-02-19
      • 2012-11-03
      相关资源
      最近更新 更多