分類: Linux

NGINX 設定密碼認證與限制可存取的 IP 位址,控制頻寬與連線數

這裡介紹如何設定 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 位址

allowdeny 可以設定允許與禁止存取網頁的來源 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 的頻寬與連線數控制,請繼續閱讀下一頁。

Page: 1 2

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

2 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

2 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

3 年 ago