Nginx - 允许源 IP

标签 nginx proxy whitelist

Nginx 支持 allowdeny限制 IP 的语法,例如allow 192.168.1.1; .但如果流量通过反向代理,则 IP 将引用代理的 IP。那么如何将其配置为将特定源 IP 列入白名单并拒绝所有其他传入请求呢?

最佳答案

remote_addr 将引用代理,但您可以配置代理以发送带有 header 字段 X-Real-IP/X-Forwarded-For 的客户端地址。

结合 ngx_http_realip模块,您可以修改传入 header 以使用remote_addr的真实客户端地址。我相信这将使用允许/拒绝语法按预期工作。

只是为了澄清——启用和配置模块后允许/拒绝语法应该相同。在下面替换您的 IP 和代理地址。

后端 nginx 允许/拒绝:

location / {
    allow <your ip>;
    allow 127.0.0.1;
    deny  all;
}

后端 nginx realip 配置:
set_real_ip_from  <your proxy>;
real_ip_header    X-Forwarded-For;

在您的 nginx 代理配置上:
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

如果您涉及多个中间代理,则需要启用 real_ip_recursive 并使用 set_real_ip_from 指令将其他地址列入白名单。

关于Nginx - 允许源 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36268272/

相关文章:

javascript - Nginx、React、Node & Let's Encrypt……如何将 Nginx 指向我的 React 应用程序

ssl - Nginx 重定向到 SSL 上的主域

c++ - 如何告诉 WinINet 使用 IE 的代理服务器凭据

node.js - 将 Node.js 应用程序(托管在 GAE 上)的 IP 列入白名单以访问 MongoDB Atlas(托管在 GCP 上)

nginx - Linode 更新 - 403 禁止使用 Rails 和 Passenger Nginx

django - 部署 Django 应用程序后,Nginx 不提供来自/var/www/html 的文件

proxy - 从代理后面下载 Visual Studio Code 中的 typescript 定义文件

node.js - BrowserSync 无法在安装了 Nginx 的 VPS 上运行

ruby-on-rails - 通过 ip 地址或通过密码限制对应用程序的访问(rails 应用程序)

ruby-on-rails - Rails 5.1 - 允许使用 JSON 参数,但在日志中仍显示为未经允许