跳至主要內容

Nginx 常用設定

Pamis Wang大约 4 分鐘伺服器NginxNginx 1.23

設定 Nginx

前言

適用於 Nginx 1.23 版本的設定,
最新的設仍要參照官方文件,
本文主要是記錄過去專案常用到的設定。

設定檔產生網站

https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhTWopen in new window

常用設定

    # 設定監聽的 port
    listen          80;
    # 定義伺服器名稱
    server_name     localhost;
    # 設定專案資料夾
    root            /home/username/vue-project/dist;
    # 指定初始頁面
    index           index.html;
    # 宣告編碼
    charset utf-8;
    # 隱藏伺服器版本資訊
    server_tokens off;
    # 加入資安標頭
    add_header Content-Security-Policy "
    default-src 'self';
    font-src 'self';
    img-src 'self';
    style-src 'self';
    script-src 'self';
    form-action 'self';
    frame-src 'none';
    frame-ancestors 'none';
    " always;

    add_header X-Content-Security-Policy "
    default-src 'self';
    font-src 'self';
    img-src 'self';
    style-src 'self';
    script-src 'self';
    form-action 'self';
    frame-src 'none';
    frame-ancestors 'none';
    " always;

    add_header Strict-Transport-Security "max-age=63072000" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-XSS-Protection  "1; mode=block" always;

上傳檔案參考設定

# 檔案大小限制,預設1m
client_max_body_size     1m;
client_header_timeout    60s;
client_body_timeout      60s;
proxy_connect_timeout    60s;
proxy_read_timeout       60s;
proxy_send_timeout       60s;

設定參考文件

將一些有用到的設定與功能說明紀錄於此

client_body_buffer_size

  • 語法:
client_body_buffer_size size;
  • 預設:
client_body_buffer_size 8k|16k;
  • 作用範圍:httpserverlocation
  • 功能說明:設置請求的緩衝區大小。 如果請求主體大於緩衝區,則將整個主體或僅將其部分寫入臨時文件。臨時文件的設定可參考 client_body_temp_path。預設情況下,緩衝區大小等於兩個內存頁。 這是 x86、其他 32 位平台和 x86-64 上的 8K。 在其他 64 位平台上通常為 16K。

client_body_temp_path

  • 語法:
client_body_temp_path path [level1 [level2 [level3]]];
  • 預設:
client_body_temp_path client_body_temp;
  • 作用範圍:httpserverlocation
  • 功能說明:定義用於存儲持有客戶端請求主體的臨時文件的目錄。 指定目錄下最多可以使用三級子目錄層次結構。需要注意存取權限設定。

client_body_timeout

  • 語法:
client_body_timeout time;
  • 預設:
client_body_timeout 60s;
  • 作用範圍:httpserverlocation
  • 功能說明:定義請求主體的逾時時間。超時僅針對兩次連續讀取操作之間的一段時間設置,而非針對整個請求主體的傳輸。 如果客戶端在此時間內未傳輸任何內容,則請求將終止並出現 408(Request Timeout)錯誤。

client_header_buffer_size

  • 語法:
client_header_buffer_size size;
  • 預設:
client_header_buffer_size 1k;
  • 作用範圍:httpserver
  • 功能說明:設置讀取客戶端請求標頭的緩衝區大小。對於大多數請求,1K 的緩衝區就足夠了。但是,如果請求包含長 cookie,或者來自 WAP 客戶端,則它可能不適合 1K。 如果請求行或請求頭字段不適合此緩衝區,則分配由 large_client_header_buffers 指令配置的更大緩衝區。

client_header_timeout

  • 語法:
client_header_timeout time;
  • 預設:
client_header_timeout 60s;
  • 作用範圍:httpserver
  • 功能說明:定義請求標頭的逾時時間。如果客戶端沒有在這段時間內傳輸整個標頭,請求將終止並出現 408(Request Timeout)錯誤。

client_max_body_size

  • 語法:
client_max_body_size size;
  • 預設:
client_max_body_size 1m;
  • 作用範圍:httpserverlocation
  • 功能說明:設定最大可允許的請求大小,請求超過大小會返回 413 (Request Entity Too Large),設定 0 可禁止檢查。

large_client_header_buffers

  • 語法:
large_client_header_buffers number size;
  • 預設:
large_client_header_buffers 4 8k;
  • 作用範圍:httpserver
  • 功能說明:設置用於讀取大型請求標頭的緩衝區的最大數量和大小。 一個請求行不能超過一個緩衝區的大小,否則會向客戶端返回 414(Request-URI Too Large)錯誤。請求頭字段也不能超過一個緩衝區的大小,否則返回 400(Bad Request)錯誤給客戶端。 緩衝區僅按需分配。 默認情況下,緩衝區大小等於 8K 字節。 如果在請求處理結束後連接轉換為保持活動狀態,則釋放這些緩衝區。

proxy_connect_timeout

  • 語法:
proxy_connect_timeout time;
  • 預設:
proxy_connect_timeout 60s;
  • 作用範圍:httpserverlocation
  • 功能說明:定義與代理服務器建立連接的超時時間。 需要注意的是這個超時時間通常不能超過 75 秒。

proxy_read_timeout

  • 語法:
proxy_read_timeout time;
  • 預設:
proxy_read_timeout 60s;
  • 作用範圍:httpserverlocation
  • 功能說明:定義從代理服務器讀取響應的超時時間。 超時僅設置在兩個連續的讀取操作之間,而不是針對整個響應的傳輸。 如果代理服務器在這段時間內沒有傳輸任何東西,連接就會關閉。

proxy_send_timeout

  • 語法:
proxy_send_timeout time;
  • 預設:
proxy_send_timeout 60s;
  • 作用範圍:httpserverlocation
  • 功能說明:設置將請求傳輸到代理服務器的超時時間。 超時僅設置在兩個連續的寫操作之間,而不是針對整個請求的傳輸。 如果代理服務器在這段時間內沒有收到任何東西,連接將關閉。
上次編輯於:
貢獻者: pamis,Pamis Wang,Pamis Wang