仅在 nginx 主页上设置基本身份验证

时间:2021-01-08 12:31:09

标签: nginx

我有以下配置。我只想授权 / 因为唯一一个有 UI。其他 URL 已经是 api,如 /report//group//delete/ 等。

upstream gofastdfs{
    server localhost:8081;
    keepalive 32;
}


server {
    listen 8080;
    server_name         localhost;
    gzip on;
    gzip_types '*';

    location / {
        auth_basic           "Caution";
        auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
        keepalive_timeout 620;
        proxy_redirect off;
        proxy_buffering off;
        proxy_pass      http://gofastdfs;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

}

但是我的配置授权每个网址,我只想限制为/

1 个答案:

答案 0 :(得分:0)

location / 匹配任何其他 location 块未处理的 URI - 即它是默认的 location

location = / 仅匹配单个 URI /

有关详细信息,请参阅 this document

您可以将配置分成两个 location 块,一个带身份验证,另一个不带。一些语句需要在两个 location 块之间复制,但大多数可以移动到外部上下文中。

例如:

keepalive_timeout 620;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

location = / {
    auth_basic           "Caution";
    auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
    proxy_pass      http://gofastdfs;
}
location / {
    proxy_pass      http://gofastdfs;
}