у меня есть 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 и перенаправляю все запросы в uWSGI, который запускает Flask
применение.
Я хочу личного пути, /private/
где что-либо ниже требует HTTP AUTH. Любые другие пути не должны требовать авторизации.
Моя проблема в том, что nginx запрашивает авторизацию независимо от того, где я делаю запрос, например, '/', '/ cool_page'.
Как правильно настроить nginx, чтобы запрашивать аутентификацию только под /private
?
Наконец, похоже, что конфигурация имеет много повторений и т. Д., Есть ли способ еще больше уменьшить мою конфигурацию?
Извините, я новичок в nginx!
В настоящее время у вас есть два названных местоположения с одинаковым именем в одной секции сервера. Это заставит nginx всегда выбирать первый определенный. Чтобы решить эту проблему, переименуйте одно из названных мест. Назови один @private
и другие @public
например.