Nginx是一款高效能的Web伺服器和反向代理,具有輕量級、高並發、靈活配置等特點,被廣泛應用於生產環境中。但是,由於其搭建過程相對簡單,還是會面臨一些安全性問題,因此需要對Nginx進行存取限制和安全設定。
一、存取限制
Nginx可以透過設定allow和deny指令來限制IP位址存取。例如,只允許特定的IP位址存取Nginx,可以在nginx.conf檔案中加入以下程式碼:
location / { deny all; allow 192.168.1.100; allow 10.0.0.0/8; allow 172.16.0.0/12; allow 192.168.0.0/16; }
上述程式碼片段的意思是拒絕所有請求,然後依序允許IP位址為192.168.1.100、10.0 .0.0/8、172.16.0.0/12、192.168.0.0/16的請求。也可以透過設定檔中的http指令設定全域的允許和拒絕規則。
User-Agent是瀏覽器之類的HTTP用戶端所發送的識別字串,可以用來判斷是否是訪客本人或一個自動程序。 Nginx可以透過設定if指令和$http_user_agent變數來限制User-Agent,例如:
if ($http_user_agent ~* (wget|curl)) { return 403; }
這段程式碼的意思是如果User-Agent中包含wget或curl字串,就回傳403錯誤碼。
Referer是HTTP請求頭中的一個字段,表示目前請求的來源位址。 Nginx可以透過設定if指令和$http_referer變數來限制Referer,例如:
if ($http_referer ~* (baidu.com|google.com)) { return 403; }
這段程式碼的意思是如果Referer包含baidu.com或google.com字串,就回傳403錯誤碼。
二、安全設定
HTTPS相比HTTP協定可以更好地保護網路應用程式的安全性,因為資料在傳輸過程中使用了SSL/TLS加密演算法。可以透過在Nginx設定檔
和ssl_certificate_key#會使用SSL憑證和私鑰來實作HTTPS協定的加密功能。
限制存取檔案目錄
server { listen 443 ssl; ssl_certificate /path/to/cert.crt; ssl_certificate_key /path/to/cert.key; ... }
上述程式碼的意思是將網站的根目錄指向/path/to/root,關閉autoindex功能,限制了允許存取的文件類型,同時設定快取策略。
安全日誌
location / { root /path/to/root; index index.html; autoindex off; location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires 1d; add_header Cache-Control "public"; } }
access_log
是Nginx存取日誌的儲存路徑。可以將日誌儲存到本機檔案或使用ELK等日誌分析工具進行分析。總結
以上是Nginx的存取限制與安全設定的詳細內容。更多資訊請關注PHP中文網其他相關文章!