【问题标题】:NGINX Reverse Proxy with Cloudflare使用 Cloudflare 的 NGINX 反向代理
【发布时间】:2020-03-24 06:24:18
【问题描述】:

我在使用 NGINX 进行反向代理配置时遇到问题。我使用 Cloudflare 作为 DNS 服务器。我向 Cloudflare 添加了两个“A”条目,其中一个启用了代理,另一个未启用。例如:

  1. system.domain.com(Cloudflare 代理开启)
  2. system2.domain.com(Cloudflare 代理关闭)

我的 NGINX 配置:

server {
    listen 80;
    listen [::]:80;

    server_name system.domain.com system2.domain.com;
    server_tokens off;

    set_real_ip_from 192.168.1.1;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;

    location / {
        allow <My Public IP>;
        deny all;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://192.168.1.100;
    }
}

在允许IP地址页面在浏览器中输入地址system.domain.com后正确加载(我的公共IP地址保存在访问日志中)。但是,当我从同一个 IP 地址输入到 system2.domain.com 地址时,我得到一个错误:

access forbidden by rule, client: 192.168.1.1

这个问题从何而来? Cloudflare 代理会以某种方式影响这一点吗?如何解决这个问题?

【问题讨论】:

    标签: nginx cloudflare nginx-reverse-proxy


    【解决方案1】:

    我认为问题出在以下行:

    real_ip_header X-Forwarded-For;
    

    我不认为它是在代理关闭时设置的。尝试将其更改为以下,应始终设置:

    real_ip_header CF-Connecting-IP;
    

    来源:https://www.tools4nerds.com/online-tools/cf-real-ip-from-generator

    【讨论】: