无法在uWSGI的子目录上正确configurationnginx的HTTPauthentication

我有一个nginx.conf ,看起来像这样:

server { server_name subdomain.example.com; listen 443 ssl; ssl_certificate /srv/ssl/something.crt; ssl_certificate_key /srv/ssl/something.key; access_log /var/log/something-nginx-access.log; error_log /var/log/something-nginx-error.log; location /private { try_files $uri @yourapplication; } location @yourapplication { include uwsgi_params; uwsgi_pass 127.0.0.1:3131; auth_basic "Restricted"; auth_basic_user_file /home/ubuntu/something.htpassword; } location / { try_files $uri @yourapplication; } location @yourapplication { include uwsgi_params; uwsgi_pass 127.0.0.1:3131; } keepalive_timeout 70; } server { listen 80; server_name subdomain.example.com; access_log /var/log/something-nginx-access.log; error_log /var/log/something-nginx-error.log; location /private { try_files $uri @yourapplication; } location @yourapplication { include uwsgi_params; uwsgi_pass 127.0.0.1:3131; auth_basic "Restricted"; auth_basic_user_file /home/ubuntu/something.htpassword; } location / { try_files $uri @yourapplication; } location @yourapplication { include uwsgi_params; uwsgi_pass 127.0.0.1:3131; } } 

这就是说 – 我通过http和https运行我的应用程序,并将所有请求转发到运行Flask应用程序的uWSGI。

我希望有一个私人的path, /private/任何下面的东西需要HTTPauthentication。 任何其他path不应该要求authentication。

我的问题是,无论我在哪里提出请求,nginx都要求auth,比如'/','/ cool_page'。

如何正确configurationnginx只需要在/private下进行身份validation?

最后,configuration似乎有很多重复等,有没有办法减less我的configuration进一步?

对不起,我是nginx新手!

目前,您在一个服务器部分中有两个具有相同名称的命名位置。 这将导致nginx总是采取第一个定义。 为了解决这个重命名的地点之一。 例如,命名一个@private和另一个@public