Nginx 反向代理和 cloudflare - 将国家代码发送到后端应用程序

Nginx 反向代理和 cloudflare - 将国家代码发送到后端应用程序

我正在尝试检测访客所在国家。我在 cloudflare dash 中选中了 geoip 选项,它会将 CF-IPCountry 标头添加到请求标头中,但我无法通过 nginx 代理将其传递给我的后端应用程序。我做错了什么?

location / {
    # forward application requests to the gunicorn server
    proxy_pass http://localhost:8080;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header CF_IPCountry $http_cf_ipcountry; #this line is the culprit
 }

编辑:后端看不到此标头。我正在使用 flask 并创建了一条路由来输出所有请求标头。

@app.route('/headers')
def header():
    headers = request.headers
    header_list = []
    for h in headers:
        header_list.append(h)
    return jsonify(header_list)

答案1

默认情况下,nginx 会忽略包含下划线的 HTTP 标头。

你有:

    proxy_set_header CF_IPCountry $http_cf_ipcountry; #this line is the culprit

但这应该是:

    proxy_set_header CF-IPCountry $http_cf_ipcountry; #this line is the culprit

相关内容