I have a relatively straight forward config:
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;
}
}
The goal is to use basic auth on the whole website, except on the /api/
subtree. While it does work with respect to basic auth, other directives like proxy_pass
are not in effect on /api/
as well.
Is it possible to just disable basic auth while retaining the other directives without copy&pasting everything?
How about two files?
includes/proxy.conf would be:
And your current conf file:
Config file
In Nginx 1.4.4 you need quotes around
off
for theauth_basic
setting.Creating your htpasswd/passwd file
Install
apache2-utils
, there is a nice helper app that creates the htpasswd file for you very quickly. http://httpd.apache.org/docs/2.2/programs/htpasswd.htmlBelow config works for me for sharing a folder from my disk without any authentication for share folder and rest of the site required authentication
Nginx location
This can be achieved with a sub location:
Note that
proxy.conf
contains the proxy conf