0
我有一個燒瓶應用程序使用gunicorn服務,並使用nginx在其上。我想使用基本身份驗證(用戶/密碼)來保護所有以/admin
(後臺)開頭的網址,但仍然繼續以沒有密碼的gunicorn服務所有其他網址。避免在nginx中使用代理重複密碼保護URL
這是我目前nginx的配置:
server {
listen 80;
server_name example.com;
charset utf-8;
location/{
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /admin {
auth_basic "Administrator Login";
auth_basic_user_file /home/app/.htpasswd;
# the following four directives are duplicated :(
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
如果我沒有在第二位置的塊複製proxy_*
指令,然後開始/admin
中的網址無法獲取轉發到gunicorn,我也得到一個404.
有什麼辦法可以避免配置重複?我試過位置嵌套,但顯然到最後nginx只「執行」一個位置塊。
這意味着我需要在兩個位置塊中重複的唯一指令是'proxy_pass http:// localhost:8000;',對吧?將'proxy_set_header'移到服務器塊。 – dukebody
這就是我認爲在閱讀文檔的基礎上 – superTyphoon