Nginx

Nginx 身份驗證僅適用於給定位置

  • August 14, 2014

我使用 Nginx 作為 python WSGI web-app 的反向代理。

它看起來像這樣:

location / {
   #auth_basic     "Administrator Login";
   #auth_basic_user_file  /var/www/static/.htpasswd;
   proxy_pass          http://mywebapp_gunicorn;
   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;
}

在 Web 應用程序中,我有一些管理員頁面,我希望得到很好的保護,所以現在我在 Web 應用程序中使用一些身份驗證來保護它們,我也想添加 Nginx 身份驗證。

如何啟動:

   auth_basic      "Administrator Login";
   auth_basic_user_file  /var/www/static/.htpasswd;

對於 path: /managers,但不適用於所有其他 URL。

您只需在目前擁有的位置塊之前添加另一個位置塊,以匹配您想要保護的 url。

location /managers {
   auth_basic      "Administrator Login";
   auth_basic_user_file  /var/www/static/.htpasswd;
   proxy_pass          http://mywebapp_gunicorn;
   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;
}

location / {
   proxy_pass          http://mywebapp_gunicorn;
   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;
}

因為在前/一個,所以會優先用於路徑 /managers 。

引用自:https://serverfault.com/questions/505482