【发布时间】:2023-02-07 06:32:05
【问题描述】:
我有一个在 Nginx + Gunicorn 服务器上运行的 Django 应用程序,我在其中使用 DRF 节流。每当我向我的服务器发出 API 请求并更改客户端中的 X-Forwarded-For 标头值时,我就能够绕过对未经身份验证的用户的限制,从而可以无限制地访问 API。这当然是不希望的。
我认为解决这个问题的一种方法是让 Nginx 在 X-Forwarded-For 请求标头的末尾附加真实 IP,然后再使用代理参数到达服务器。当我检查 Postman / RapidApi 客户端时,它似乎并没有改变标题。我认为这就是导致错误的原因,但最终我不知道。
Nginx 配置文件:
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
Nginx 的 proxy_params 文件包括设置 X-Forwarded-For 请求标头,如下所示:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
有人可以告诉我我做错了什么以及如何解决它,这样您就不能发出无限制的 API 请求了吗?如果您需要更多信息或说明,请告诉我。
【问题讨论】:
标签: django nginx django-rest-framework