У меня относительно простая конфигурация:
upstream appserver-1 {
server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://appserver-1;
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;
auth_basic "Restricted";
auth_basic_user_file /path/to/htpasswd;
}
location /api/ {
auth_basic off;
}
}
Цель состоит в том, чтобы использовать базовую аутентификацию на всем веб-сайте, кроме /api/
поддерево. Хотя он работает в отношении базовой аутентификации, другие директивы, такие как proxy_pass
не действуют на /api/
также.
Можно ли просто отключить базовую аутентификацию, сохранив другие директивы, не копируя и не вставляя все?
Как насчет двух файлов?
include / proxy.conf будет:
proxy_pass http://appserver-1;
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;
И ваш текущий файл conf:
upstream appserver-1 {
server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name example.com;
location / {
auth_basic "Restricted";
auth_basic_user_file /path/to/htpasswd;
include includes/proxy.conf;
}
location /api/ {
auth_basic off;
include includes/proxy.conf;
}
}
В Nginx 1.4.4 вам нужны кавычки вокруг off
для auth_basic
настройка.
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/passwd;
include /etc/nginx/uwsgi_params;
uwsgi_pass unix:/tmp/app.sock;
}
location /api {
auth_basic "off";
include /etc/nginx/uwsgi_params;
uwsgi_pass unix:/tmp/app.sock;
}
Установить apache2-utils
, есть хорошее вспомогательное приложение, которое очень быстро создает для вас файл htpasswd. http://httpd.apache.org/docs/2.2/programs/htpasswd.html
htpasswd -c -m <filename> <username>
Конфигурация ниже работает для меня для совместного использования папки с моего диска без какой-либо аутентификации для общей папки, а для остальной части сайта требуется аутентификация
server {
listen 80;
server_name localhost;
root C:\\Users\\Work\\XYZ\\;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
auth_basic "Administrator Login";
auth_basic_user_file C:\\Users\\Work\\.htpasswd;
location /share {
auth_basic "off";
allow all; # Allow all to see content
alias C:\\Users\\sg32884\\Work\\share\\;
}
}
Это может быть достигнуто с помощью дополнительного местоположения:
upstream appserver-1 {
server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name example.com;
location / {
location /api/ {
auth_basic off;
include includes/proxy.conf;
}
auth_basic "Restricted";
auth_basic_user_file /path/to/htpasswd;
include includes/proxy.conf;
}
}
Обратите внимание, что proxy.conf
содержит прокси conf