Nginx 作為轉發代理和身份驗證

Nginx 作為轉發代理和身份驗證

我想建立一個環境,​​在該環境中我將有一個簡單的含義,可以透過用於代理和應用程式 nginx 的轉發代理進行存取。

我的兩個 nginx 都是 docker 容器。

首先這是應用程式的 nginx.cong

events { }

http {
  server {
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
    root /doc;
    location / {

    }
  }
}

它與我設定的用戶名:密碼一起工作正常。我可以透過簡單的curl命令存取它

捲曲 -u 使用者名稱:密碼http://172.18.0.1:8184/test.csv

現在,我使用此配置設定代理

events { }


http {

    server {
        auth_basic "BLABLABLA";
        auth_basic_user_file /etc/nginx/.htpasswd;
        listen 8185;
        location / {
            proxy_pass http://$http_host$uri$is_args$args;
            proxy_pass_request_headers on;
        }        
    }
}

我嘗試使用此代理執行此命令再次訪問第一個應用程式

curl -x 127.0.0.1:8185 -U 用戶代理:密碼代理 -u 用戶:密碼http://172.18.0.1:8184/test.csv

但它返回401。

在日誌中,我看到代理正在讀取應用程式的 user:password,而不是作為 user_proxy:password_proxy 提供的密碼。

我不知道如何設定代理以正確使用正確的使用者:密碼作為身份驗證。

提前致謝。

相關內容