Ubuntu

Nginx 密碼保護整個埠號 8081

  • August 15, 2014

我正在嘗試用密碼保護我網站上的整個埠 - https://domain.com:8081>和<http://domain.com:8081

我嘗試通過在伺服器塊中添加以下內容來編輯 /etc/nginx/sites-enabled/domain.com.vhost 無濟於事(我從這個連結獲得,除了該連結是關於密碼保護目錄而不是埠):

location ^~ :8081 {
auth_basic            "Restricted Area";
auth_basic_user_file  conf/htpasswd;
}

我也試過“位置:8081”,但這也沒有用。

如何密碼保護埠 8081(或我想要的任何其他埠)?

如果有什麼不同,我使用的是 Ubuntu 14.04.1 LTS 和 Nginx 1.4.6。

謝謝。

$$ EDIT $$ 在實施 Nathan 的解決方案時,當轉到https://domain.com:8081/phpmyadmin/ (SSL) 時,它會提示輸入使用者名和密碼,但會給我一個“500 內部伺服器錯誤”頁面。以下是 Nginx 錯誤日誌中顯示的內容:

[crit] 3390#0: *154 open() "/etc/nginx/conf/htpasswd" failed (13: Permission denied), client: 152.35.52.108, server: domain.com, request: "GET /phpmyadmin/ HTTP/1.1", host: "domain.com:8081"

當轉到http://domain.com:8081/phpmyadmin/(非 SSL)時,它給了我“400 Bad Request The plain HTTP request was sent to HTTPS port”。錯誤日誌上沒有任何記錄;相反,Nginx 訪問日誌中出現以下內容:

"GET /phpmyadmin/ HTTP/1.1" 40.1" 400 279 "-" "[user agent]"

我假設您server {對此埠有一個單獨的塊……所以您只需保護該/伺服器塊內的目錄:

location / {
auth_basic            "Restricted Area";
auth_basic_user_file  conf/htpasswd;
}

所以:

server {
listen 8081;
server_name whateveryouwant;
root /path/to/root/folder;
location / {
   auth_basic            "Restricted Area";
   auth_basic_user_file  conf/htpasswd;
   }
}

我還沒有測試過這個,但它應該是這樣的。

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