首页 > 解决方案 > 从 Nginx HTTP 基本身份验证中排除 API 路由

问题描述

我正在尝试从 Nginx HTTP 基本身份验证中排除 API 路由“ https://example.com/api/ ”。

这是我的 Nginx 配置文件:

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    return 302 https://$server_name$request_uri;
}

server {

    # SSL configuration

    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate         /etc/nginx/ssl/cert.crt;
    ssl_certificate_key     /etc/nginx/ssl/key.pem;
    ssl_client_certificate  /etc/nginx/ssl/cloudflare.crt;
    ssl_verify_client on;

    server_name example.com;
    root /var/www/mysite;

    index app.php index.php;

    location / {
        try_files $uri $uri/ /app.php$is_args$args;

        # Restricting Access
        auth_basic 'Administrator Area';
        auth_basic_user_file /etc/apache2/.htpasswd;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }

    # Restriction off for api
    location ^~ /api/ {        
        auth_basic off;
        allow all;
    }

}

但是当我尝试在浏览器上点击“ https://example.com/api/ ”时,它仍然要求进行基本身份验证。通常,如果没有基本身份验证,它应该在浏览器上提供 JSON 响应。

有谁知道如何解决这个问题?任何形式的帮助将不胜感激。谢谢。

标签: linuxubuntunginxnginx-config

解决方案


推荐阅读