nginx auth_basic 是否可以透過 HTTPS 運作?

nginx auth_basic 是否可以透過 HTTPS 運作?

我一直在嘗試在 SSL 網站中設定受密碼保護的目錄,如下所示:

/etc/nginx/sites-available/default

server {
    listen 443:
    ssl on;
    ssl_certificate /usr/certs/server.crt;
    ssl_certificate_key /usr/certs/server.key;

    server_name server1.example.com;

    root /var/www/example.com/htdocs/;
    index index.html;

    location /secure/ {
        auth_basic "Restricted";
        auth_basic_user_file /var/www/example.com/.htpasswd;
    }
}

問題是當我嘗試存取 URL 時https://server1.example.com/secure/,出現「404:未找到」錯誤頁面。

我的 error.log 顯示以下錯誤:

011/11/26 03:09:06 [error] 10913#0: *1 no user/password was provided for basic authentication,
client: 192.168.0.24, server: server1.example.com, request: "GET /secure/ HTTP/1.1",
host: "server1.example.com"

但是,我能夠為普通 HTTP 虛擬主機設定受密碼保護的目錄,沒有任何問題。

是配置問題還是其他什麼問題?

答案1

可能是 auth_basic_user_file 的路徑問題,您的絕對路徑使 nginx 感到困惑:

http://wiki.nginx.org/HttpAuthBasicModule#auth_basic_user_file

從0.6.7版本開始,檔案名稱路徑是相對於nginx設定檔nginx.conf的目錄,而不是相對於nginx前綴目錄。

我不確定你在其他情況下是如何工作的。文件中的引用表明您應該擁有類似的內容:

auth_basic_user_file htpasswd/www.example.com

如果您的伺服器設定檔為“/etc/nginx/nginx.conf”,則密碼檔案為“/etc/nginx/htpasswd/www.example.com”。

您可以透過執行「sudo nginx -t」來檢查 nginx 配置。如果存在配置錯誤,即身份驗證文件不在預期的位置,它應該在那時告訴您。

相關內容