私は比較的単純な設定をしています:
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/
サブツリーを除くWebサイト全体で基本認証を使用することです。基本認証に関しては機能しますが、proxy_pass
などの他のディレクティブは/api/
にも有効ではありません。
すべてをコピーして貼り付けることなく、他のディレクティブを保持しながら基本認証を無効にすることは可能ですか?
2つのファイルはどうですか?
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では、auth_basic
設定のoff
を引用符で囲む必要があります。
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ファイルをすばやく作成するNiceヘルパーアプリがあります。 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
にはプロキシ設定が含まれます