user nginx; worker_processes auto; #nginx開啓的進程數 worker_cpu_affinity auto; #自動爲每一個進程綁定CPU worker_rlimit_nofile 65536; #每一個進程最大打開文件數 pid /var/run/nginx.pid; #PID文件存放路徑 events { use epoll; worker_connections 65536; #每一個進程最大鏈接數 } http { include mime.types; #文件擴展名與文件類型映射表 default_type application/octet-stream; #默認文件類型 charset utf-8; #默認編碼 server_names_hash_bucket_size 128; #服務器名字的hash表大小 client_header_buffer_size 4k; #設置緩衝區大小 large_client_header_buffers 4 32k; #設置緩衝區最大限制 client_max_body_size 8m; #上傳文件大小限制 #該響應頭設置禁用瀏覽器對 Content-Type 類型進行猜想的行爲。由於不少狀況下服務器並無很好的配置 Content-Type 類型,所以瀏覽器會根據文檔的數據特徵來肯定類型,好比攻擊者可讓本來解析爲圖片的請求被解析爲 JavaScript。咱們發現以上三個比較常見的防攻擊配置,仍是很是實用的,建議使用,以前咱們的服務器只使用了 add_header X-Frame-Options "SAMEORIGIN"; 配置。 add_header X-Content-Type-Options nosniff; #X-Frame-Options 響應頭是用來給瀏覽器指示容許一個頁面能否在 <frame>, <iframe> 或者 <object> 中展示的標記。網站可使用此功能,來確保本身網站的內容沒有被嵌到別人的網站中去,也從而避免了點擊劫持 (clickjacking) 的攻擊。 add_header X-Frame-Options SAMEORIGIN; #XSS 是跨站腳本攻擊,是比較常見的網絡攻擊手段,改字段指示瀏覽器是否爲當前頁面開啓瀏覽器內建的 XSS 過濾機制。 1 表示容許過濾器,mode=block 指示瀏覽器在檢測到 XSS 攻擊後禁止加載整個頁面。 add_header X-XSS-Protection "1; mode=block"; open_file_cache max=65536 inactive=20s; #打開文件最大緩存數量,inactive指通過20s後文件沒被請求後刪除緩存 open_file_cache_valid 30s; #間隔30s檢查一次緩存信息 open_file_cache_min_uses 1; #open_file_cache指令中的inactive參數時間內文件的最少使用次數,若是超過這個數字,文件描述符一直是在緩存中打開的 sendfile on; #開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,對於普通應用設爲on。如進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡I/O處理速度,下降系統的負載。注意:若是圖片顯示不正常把這個改爲off。 tcp_nopush on; #數據包最大時,一次傳輸 keepalive_timeout 60; #長鏈接超時時間 tcp_nodelay on; #禁用nagle算法,不緩存數據 server_tokens off; #隱藏nginx版本號 port_in_redirect off; #302跳轉時不添加端口號 #指定鏈接到後端FastCGI的超時時間 fastcgi_connect_timeout 300; #向FastCGI傳送請求的超時時間,這個值是指已經完成兩次握手後向FastCGI傳送請求的超時時間 fastcgi_send_timeout 300; #接收FastCGI應答的超時時間,這個值是指已經完成兩次握手後接收FastCGI應答的超時時間 fastcgi_read_timeout 300; #指定讀取FastCGI應答第一部分須要用多大的緩衝區,這裏能夠設置爲fastcgi_buffers指令指定的緩衝區大小,上面的指令指定它將使用1 個64k的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭通常狀況下都很小(不會超過1k),可是你若是在fastcgi_buffers指令中 指定了緩衝區的大小,那麼它也會分配一個fastcgi_buffers指定的緩衝區大小去緩存 fastcgi_buffer_size 64k; #指定本地須要用多少和多大的緩衝區來緩衝FastCGI的應答,即4個64k的緩衝區緩存,超過256k部分會緩存到fastcgi_temp指定的路徑中 fastcgi_buffers 4 64k; #高負荷下緩衝大小(fastcgi_buffers*2) fastcgi_busy_buffers_size 128k; #在寫入fastcgi_temp_path時將用多大的數據塊,默認值是fastcgi_buffers的兩倍 fastcgi_temp_file_write_size 128k; #open gzip gzip on; #開啓gzip壓縮 gzip_vary on; #通知客戶端使用了gzip壓縮 gzip_min_length 1k; #最小壓縮文件大小 gzip_buffers 4 16k; #壓縮緩衝區 gzip_http_version 1.0; gzip_comp_level 2; #壓縮等級 gzip_types text/plain text/javascript application/x-javascript text/css application/xml image/jpeg image/png image/gif image/bmp; #壓縮類型,默認就已經包含text/html,因此下面就不用再寫了,寫上去也不會有問題,可是會有一個warn gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #IE6前的版本不啓用壓縮 #Proxy proxy_connect_timeout 600; #nginx跟後端服務器鏈接超時時間(代理鏈接超時) proxy_read_timeout 600; #鏈接成功後,後端服務器響應時間(代理接收超時) proxy_send_timeout 600; #後端服務器數據回傳時間(代理髮送超時) proxy_buffer_size 16k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小 proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k如下的設置 proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #在寫入proxy_temp_path時將用多大的數據塊 #Limit limit_req_zone $binary_remote_addr zone=xxx:10m rate=5r/s; #會話狀態儲存的空間10m,同一IP地址請求連接頻率最多5次/秒 #cache proxy_cache_path /dev/shm levels=1:2 keys_zone=cache_one:20m max_size=1g; #path:定義緩存放在磁盤的哪一個目錄下。此處表示定義在/usr/local/nginx/cache_dir目錄下。 目錄不存在會自動建立。 #levels:定義緩存目錄的級別,同時定義緩存目錄名稱的字符數。例如levels=1:2:2表示3級目錄,且第一級目錄名1個字符,第二級目錄2個字符,第三級目錄2個字符。目錄最多3級,目錄名最多爲2個字符。例如上例中"levels=1:2"產生的緩存文件路徑多是這樣的"/usr/local/nginx/cache_dir/d/f1/50a3269acaa7774c02d4da0968124f1d",注意其中加粗的字體。 #keys_zone:定義緩存標識名稱和內存中緩存的最大空間。name部分必須惟一,在後面會引用name來表示使用該緩存方法。 #max_size:定義磁盤中緩存目錄的最大空間。即path定義的文件最大空間。 #Log format #日誌格式 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; server { listen 80 default; server_name _; return 403; } include vhosts/*.conf; #導入vhosts中的conf文件 }