首頁  >  文章  >  運維  >  Nginx的存取限制與安全設定

Nginx的存取限制與安全設定

WBOY
WBOY原創
2023-06-10 18:33:114118瀏覽

Nginx是一款高效能的Web伺服器和反向代理,具有輕量級、高並發、靈活配置等特點,被廣泛應用於生產環境中。但是,由於其搭建過程相對簡單,還是會面臨一些安全性問題,因此需要對Nginx進行存取限制和安全設定。

一、存取限制

  1. IP限制

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指令設定全域的允許和拒絕規則。

  1. User-Agent限制

User-Agent是瀏覽器之類的HTTP用戶端所發送的識別字串,可以用來判斷是否是訪客本人或一個自動程序。 Nginx可以透過設定if指令和$http_user_agent變數來限制User-Agent,例如:

if ($http_user_agent ~* (wget|curl))
{
    return 403;
}

這段程式碼的意思是如果User-Agent中包含wget或curl字串,就回傳403錯誤碼。

  1. Referer限制

Referer是HTTP請求頭中的一個字段,表示目前請求的來源位址。 Nginx可以透過設定if指令和$http_referer變數來限制Referer,例如:

if ($http_referer ~* (baidu.com|google.com))
{
    return 403;
}

這段程式碼的意思是如果Referer包含baidu.com或google.com字串,就回傳403錯誤碼。

二、安全設定

  1. HTTPS保護

HTTPS相比HTTP協定可以更好地保護網路應用程式的安全性,因為資料在傳輸過程中使用了SSL/TLS加密演算法。可以透過在Nginx設定檔

ssl_certificate_key#會使用SSL憑證和私鑰來實作HTTPS協定的加密功能。 限制存取檔案目錄

  1. Nginx預設會將
  2. /etc/nginx/html
下的所有檔案和子目錄暴露在網站根目錄下,因此需要限制存取檔案目錄。可以在nginx.conf設定檔中加入以下程式碼來限制目錄的存取:

server {
    listen 443 ssl;
    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;
    ...
}
上述程式碼的意思是將網站的根目錄指向/path/to/root,關閉autoindex功能,限制了允許存取的文件類型,同時設定快取策略。

安全日誌

  1. 為了及時發現攻擊行為,建議開啟Nginx的日誌記錄功能。可以在nginx.conf設定檔中加入以下程式碼來記錄存取日誌:
  2. 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的存取限制和安全設定對於Web應用程式的安全性至關重要,可以透過IP限制、User-Agent限制、Referer限制等措施來限制訪問,同時也可以透過開啟HTTPS、限制存取檔案目錄、安全性日誌等方式來提高Web應用程式的安全性。但要注意的是,這些措施僅能提高Web應用程式的安全性,而無法完全保證其安全性,因此還需要定期更新軟體版本、及時修補漏洞等措施來保障Web應用程式的安全。

以上是Nginx的存取限制與安全設定的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn