Nginx 常用設定
大约 4 分鐘
設定 Nginx
前言
適用於 Nginx 1.23 版本的設定,
最新的設仍要參照官方文件,
本文主要是記錄過去專案常用到的設定。
設定檔產生網站
https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhTW
常用設定
# 設定監聽的 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;
- 作用範圍:
http
,server
,location
- 功能說明:設置請求的緩衝區大小。 如果請求主體大於緩衝區,則將整個主體或僅將其部分寫入臨時文件。臨時文件的設定可參考
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;
- 作用範圍:
http
,server
,location
- 功能說明:定義用於存儲持有客戶端請求主體的臨時文件的目錄。 指定目錄下最多可以使用三級子目錄層次結構。需要注意存取權限設定。
client_body_timeout
- 語法:
client_body_timeout time;
- 預設:
client_body_timeout 60s;
- 作用範圍:
http
,server
,location
- 功能說明:定義請求主體的逾時時間。超時僅針對兩次連續讀取操作之間的一段時間設置,而非針對整個請求主體的傳輸。 如果客戶端在此時間內未傳輸任何內容,則請求將終止並出現 408(Request Timeout)錯誤。
client_header_buffer_size
- 語法:
client_header_buffer_size size;
- 預設:
client_header_buffer_size 1k;
- 作用範圍:
http
,server
- 功能說明:設置讀取客戶端請求標頭的緩衝區大小。對於大多數請求,1K 的緩衝區就足夠了。但是,如果請求包含長 cookie,或者來自 WAP 客戶端,則它可能不適合 1K。 如果請求行或請求頭字段不適合此緩衝區,則分配由
large_client_header_buffers
指令配置的更大緩衝區。
client_header_timeout
- 語法:
client_header_timeout time;
- 預設:
client_header_timeout 60s;
- 作用範圍:
http
,server
- 功能說明:定義請求標頭的逾時時間。如果客戶端沒有在這段時間內傳輸整個標頭,請求將終止並出現 408(Request Timeout)錯誤。
client_max_body_size
- 語法:
client_max_body_size size;
- 預設:
client_max_body_size 1m;
- 作用範圍:
http
,server
,location
- 功能說明:設定最大可允許的請求大小,請求超過大小會返回 413 (Request Entity Too Large),設定 0 可禁止檢查。
large_client_header_buffers
- 語法:
large_client_header_buffers number size;
- 預設:
large_client_header_buffers 4 8k;
- 作用範圍:
http
,server
- 功能說明:設置用於讀取大型請求標頭的緩衝區的最大數量和大小。 一個請求行不能超過一個緩衝區的大小,否則會向客戶端返回 414(Request-URI Too Large)錯誤。請求頭字段也不能超過一個緩衝區的大小,否則返回 400(Bad Request)錯誤給客戶端。 緩衝區僅按需分配。 默認情況下,緩衝區大小等於 8K 字節。 如果在請求處理結束後連接轉換為保持活動狀態,則釋放這些緩衝區。
proxy_connect_timeout
- 語法:
proxy_connect_timeout time;
- 預設:
proxy_connect_timeout 60s;
- 作用範圍:
http
,server
,location
- 功能說明:定義與代理服務器建立連接的超時時間。 需要注意的是這個超時時間通常不能超過 75 秒。
proxy_read_timeout
- 語法:
proxy_read_timeout time;
- 預設:
proxy_read_timeout 60s;
- 作用範圍:
http
,server
,location
- 功能說明:定義從代理服務器讀取響應的超時時間。 超時僅設置在兩個連續的讀取操作之間,而不是針對整個響應的傳輸。 如果代理服務器在這段時間內沒有傳輸任何東西,連接就會關閉。
proxy_send_timeout
- 語法:
proxy_send_timeout time;
- 預設:
proxy_send_timeout 60s;
- 作用範圍:
http
,server
,location
- 功能說明:設置將請求傳輸到代理服務器的超時時間。 超時僅設置在兩個連續的寫操作之間,而不是針對整個請求的傳輸。 如果代理服務器在這段時間內沒有收到任何東西,連接將關閉。