J'ai une configuration relativement simple:
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;
}
}
L'objectif est d'utiliser l'authentification de base sur l'ensemble du site Web, sauf sur le /api/
sous-arbre. Bien que cela fonctionne en ce qui concerne l'authentification de base, d'autres directives comme proxy_pass
ne sont pas en vigueur sur /api/
ainsi que.
Est-il possible de désactiver simplement l'authentification de base tout en conservant les autres directives sans tout copier-coller?
Que diriez-vous de deux fichiers?
le fichier/proxy.conf serait:
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;
Et votre fichier de conf actuel:
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;
}
}
Dans Nginx 1.4.4, vous avez besoin de guillemets autour de off
pour le auth_basic
réglage.
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;
}
Installer Apache2-utils
, il existe une application d'assistance Nice qui crée le fichier htpasswd pour vous très rapidement. http://httpd.Apache.org/docs/2.2/programs/htpasswd.html
htpasswd -c -m <filename> <username>
La configuration ci-dessous fonctionne pour moi pour partager un dossier à partir de mon disque sans aucune authentification pour le dossier de partage et le reste du site authentification requise
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\\;
}
}
Cela peut être réalisé avec un sous-emplacement:
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;
}
}
Notez que proxy.conf
contient le proxy conf