如何从Nginx的基本身份验证中排除路由?

时间:2019-07-11 10:22:09

标签: nginx

我有nginx服务器,其后运行着Django App,该服务器通过Basic_auth身份验证进行保护。我想要的是从身份验证中排除某些端点,例如:

/api/v1/testpoint/?search=48

我尝试使用this,但得到404。

1 个答案:

答案 0 :(得分:0)

就我而言,我在mysite中添加了类似内容:

location /api/v1/testpoint/ {
    auth_basic off;
}

成功禁用了对/api/v1/testpoint/的所有请求的Basic_authentication。

但是我遇到了404错误,因为当对/api/v1/testpoint/?search=48的请求到达时,Nginx尝试根据其默认的公共Web根来服务该请求。

但是由于我正在运行django应用程序,因此应该将请求转发到django应用程序,而不是相对于默认公共Web根而言不为它们提供服务。

nginx正在通过运行在端口9090上的uWsgi服务器与django应用进行通信。

所以我修改了上面的代码块:

location /api/v1/testpoint/ {
    auth_basic  off;
    uwsgi_pass  127.0.0.1:9090;
    include  uwsgi_params;
}

这解决了问题。