自用 nginx優化

2021-10-06 17:47:18 字數 4018 閱讀 1309

nginx介紹:

nginx無論是對於運維、開發、還是測試來說,都是日常工作需要掌握的乙個知識點.

nginx是乙個高效能的http server和**軟體,它具有高併發、且占用資源少,同時也是乙個比較優秀的**和負載均衡、快取伺服器,它可以執行於多種平台。官網位址為:

web伺服器:高效能的web伺服器軟體,與apache相比,它支援更多的併發連線且占用伺服器資源少,效率高。

反向**或負載均衡伺服器:作為負載均衡伺服器,它可以作為http server或db等伺服器的**伺服器,類似於haproxy**軟體的功能,nginx的**功能相對簡單,效率也不及haproxy,同時它是乙個優秀的郵件**伺服器軟體。

快取伺服器:nginx還可以作為快取伺服器,類似於專業的快取軟體功能。

優點: 高併發:能支援1-2萬甚至是更多的併發連線(靜態小檔案)

 記憶體消耗小

 可以做http反向**—負載均衡的功能

 內建對集群節點伺服器的健康檢查功能,不過功能相對較弱

 通過cache外掛程式可以實現快取軟體能夠實現的功能

nginx安裝有附近文件,這裡就不在安裝。

#執行使用者

user www-data;

#nginx程序數,建議和cpu總核心數相同

worker_processes 4;

pid /run/nginx.pid;

#乙個nginx程序開啟的最多檔案描述符數目,理論值應該是最多開啟檔案數(系統的值ulimit -n)與nginx程序數相除,但是nginx分配請求並不均勻,所以建議與ulimit -n的值保持一致。

worker_rlimit_nofile 65535;

#工作模式與連線數上限

events {

#單個程序最大連線數(最大連線數=連線數*程序數)

worker_connections 65535;

#參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]

###開啟高效檔案傳輸模式,sendfile指令指定nginx是否呼叫sendfile函式來輸出檔案,對於普通應用設為 on,

sendfile on;

#當使用sendfile函式時,tcp_nopush才起作用,它和指令tcp_nodelay是互斥的。

tcp_nopush on;

#設定套接字的tcp_nodelay = on 選項來完成,這樣就禁用了nagle 演算法

tcp_nodelay on;

#客戶端超時時間,這裡不是指整個傳輸過程的時間, 而是指客戶端兩個讀操作之間的時間,即如果客戶端超過這麼長時間沒有讀任何資料,nginx關閉該連線

send_timeout 60;

#設定http頭中的keep-alive

keepalive_timeout 65;

#set the maximum size of the types hash tables

types_hash_max_size 2048;

#隱藏nginx伺服器系統版本等資訊

# server_tokens off;

#指定乙個request可接受的body大小,即請求頭里的content-length. 如果請求body超過該值,nginx返回413("request entity too large")

client_max_body_size 10m;

#客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設定,一般乙個請求頭的大小不會超過1k

client_header_buffer_size 4k;

#指定允許為客戶端請求頭最大分配buffer個數和大小.

large_client_header_buffers 8 128k;

# server_names_hash_bucket_size 64;

# server_name_in_redirect off;

#副檔名與檔案型別對映表

include /etc/nginx/mime.types;

#預設檔案型別

### logging settings

##access_log /var/log/nginx/access.log;

error_log /var/log/nginx/error.log;

### gzip settings

###開啟gzip壓縮輸出

gzip on;

#最小壓縮檔案大小

gzip_min_length 1k;

#壓縮緩衝區

gzip_buffers 16 8k;

#壓縮版本

#壓縮等級

gzip_comp_level 6;

#ie6 不壓縮

gzip_disable "msie6";

#enables response header of "vary: accept-encoding".

gzip_vary on;

#nginx作為反向**時,啟用或關閉壓縮上游伺服器返回內容的選項

# gzip_proxied any;

#壓縮型別

### proxy global settings

###是否開啟buffer, 為on時,盡可能從後端讀資料存如buffer, 為off時,收到後端資料立即**給客戶端, 對於long-polling應用,需要關閉proxy_buffering

proxy_buffering on;

#存放後端伺服器返回結果的buffer大小

proxy_buffer_size 4k;

#存放後端伺服器返回結果的buffer 個數和大小, buffer滿時會寫到臨時檔案

proxy_buffers 8 4k;

#可以處於busy狀態的buffer總和,它控制了同時傳輸到客戶端的buffer數量

proxy_busy_buffers_size 16k;

#定義了跟**伺服器連線的超時時間,必須留意這個time out時間不能超過75秒

proxy_connect_timeout 60s;

#headers hash table bucket大小,如果headers名稱大於64字元,需要增加此值

proxy_headers_hash_bucket_size 64;

#headers hash table大小

#指定nginx等待後端返回資料最長時間,該timeout並不是指整個response時間,而是指兩次讀之間的時間

proxy_read_timeout 60s;

#nginx傳送請求到後端最大時間,該timeout並不是指整個傳輸時間,而是指兩次寫之間的時間

proxy_send_timeout 30s;

### open file optimize

##open_file_cache max=102400 inactive=20s;

#指定多長時間檢查一下open_file_cache中檔案的有效性

open_file_cache_valid 60s;

#指定了在open_file_cache指令無效的引數中一定的時間範圍內可以使用的最小檔案數, 如果使用更大的值,檔案描述符在cache中總是開啟狀態

open_file_cache_min_uses 1;

#是否cache搜尋檔案的錯誤

open_file_cache_errors on;

### virtual host configs

##include /etc/nginx/conf.d/*.conf;

include /etc/nginx/sites-enabled/*;

ceres優化器使用方法(自用)

詳見vins 本內容供自己查閱使用 1.構建factor,繼承costfunction或者sizecostfunction函式,在evaluate形參中傳遞要優化的引數parameters,需要計算的參差residuals和jacobians,然後就是計算參差和雅克比矩陣。2.構建ceres pro...

php優化 nginx優化 mysql優化

php優化 1 將類的方法定義為static。2 盡量使用單引號。3 修改php fpm程序數。4 修改單個指令碼最大可使用記憶體。5 大的陣列使用完之後要及時釋放。6 迴圈的時候,制定最大迴圈次數 7 不使用 遮蔽錯誤 8 盡量採用大量的 php 內建函式 9 使用require代替require...

nginx 優化 Nginx 站點目錄

禁止解析指定目錄下的指定程式 location data php php5 sh pl py 根據實際來禁止哪些目錄下的程式,且該配置必須寫在 nginx 解析 php 的配置前面 deny all 禁止訪問指定目錄 location data php php5 sh pl py 根據實際來禁止哪些...