這裡介紹如何設定 NGINX 網頁伺服器,加上密碼認證與限制可存取的 IP 位址,並控制頻寬與連線數。
在 NGINX 伺服器中若要限制只有特定的使用者可以瀏覽網頁的話,可以使用帳號與密碼認證的方式,或是設定可存取網頁的來源 IP 位址,以下是設定的步驟教學。
NGINX 帳號與密碼認證
auth_basic
可以啟用 HTTP Basic Authentication,讓使用者透過帳號與密碼進行認證,而儲存帳號與密碼的檔案則是使用 auth_basic_user_file
來指定:
location / {
auth_basic "closed site";
auth_basic_user_file conf/htpasswd;
}
auth_basic_user_file
所指定的帳號與密碼檔案格式如下:
# 這是註解 name1:password1 name2:password2:這是註解 name3:password3
而密碼的部分要先經過編碼,可以使用 Apache 所提供的 htpasswd
指令來產生,或是使用 openssl
:
openssl passwd
執行這行指令之後,再輸入兩次要設定的密碼,就會產生經過編碼的密碼,例如 12345
經過編碼後會像這樣:
A5F0pZqTMG1ks
再把這個經過編碼的密碼放進帳號與密碼的檔案中,
gtwang:A5F0pZqTMG1ks
這樣就新增了一個 gtwang
帳號,而密碼為 12345
。
如果要整個網站都受到帳號與密碼的保護,但開放一些特定目錄可以不需要帳號與密碼,則可以在不需要帳號與密碼的路徑中把 auth_basic
設定為 off
:
server { auth_basic "closed website"; auth_basic_user_file conf/htpasswd; location /public/ { auth_basic off; } }
這樣使用者在瀏覽所有 /public/
之下的網頁都不需要輸入帳號與密碼。
NGINX 限制可存取的 IP 位址
allow
與 deny
可以設定允許與禁止存取網頁的來源 IP 位址,設定的方式跟 Apache 一樣,列在上方的規則會優先執行:
location / {
deny 192.168.1.2;
allow 192.168.1.1/24;
allow 127.0.0.1;
deny all;
}
這樣的設定會禁止 192.168.1.2
這個來源 IP 位址存取網頁,並允許其它所有 192.168.1.1/24
網段的 IP 位址的存取,另外也允許本機(127.0.0.1
)存取,除了上述的來源之外,一律禁止存取。
除了 IPv4 之外,也可以使用 IPv6,用法皆相同:
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
接下來要介紹 NGINX 的頻寬與連線數控制,請繼續閱讀下一頁。
繼續閱讀: 12