人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

詳解nginx 配置文件解讀

發(fā)布日期:2022-01-31 19:40 | 文章來(lái)源:gibhub

nginx配置文件主要分為四個(gè)部分:

main{#(全局設(shè)置)
http{#服務(wù)器
upstream{} #(負(fù)載均衡服務(wù)器設(shè)置:主要用于負(fù)載均衡和設(shè)置一系列的后端服務(wù)器)
server{ #(主機(jī)設(shè)置:主要用于指定主機(jī)和端口)
location{}#(URL匹配特點(diǎn)位置的設(shè)置)
}
}
}

server繼承main,location繼承server,upstream即不會(huì)繼承其他設(shè)置也不會(huì)被繼承。

一、main 全局配置

nginx在運(yùn)行時(shí)與具體業(yè)務(wù)功能(比如http服務(wù)或者email服務(wù)代理)無(wú)關(guān)的一些參數(shù),比如工作進(jìn)程數(shù),運(yùn)行的身份等。

user www www;
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
error_log /var/logs/nginx_error.log crit;
pid    /usr/local/webserver/nginx/nginx.pid;
worker_rlimit_nofile 65535;

user www www;: 指定nginx進(jìn)程使用什么用戶啟動(dòng)

worker_processes 4; : 指定啟動(dòng)多少進(jìn)程來(lái)處理請(qǐng)求,一般情況下設(shè)置成CPU的核數(shù),如果開啟了ssl和gzip更應(yīng)該設(shè)置成與邏輯CPU數(shù)量一樣甚至為2倍,可以減少I/O操作。使用grep ^processor /proc/cpuinfo | wc -l查看CPU核數(shù)。

worker_cpu_affinity 0001 0010 0100 1000;: 在高并發(fā)情況下,通過(guò)設(shè)置將CPU和具體的進(jìn)程綁定來(lái)降低由于多核CPU切換造成的寄存器等現(xiàn)場(chǎng)重建帶來(lái)的性能損耗。如worker_cpu_affinity 0001 0010 0100 1000; (四核)。

error_log /var/logs/nginx_error.log crit;: error_log是個(gè)主模塊指令,用來(lái)定義全局錯(cuò)誤日志文件。日志輸出級(jí)別有debug、info、notice、warn、error、crit可供選擇,其中,debug輸出日志最為最詳細(xì),而crit輸出日志最少。

pid /usr/local/webserver/nginx/nginx.pid;: 指定進(jìn)程pid文件的位置。worker_rlimit_nofile 65535;: 用于指定一個(gè)nginx進(jìn)程可以打開的最多文件描述符數(shù)目,這里是65535,需要使用命令“ulimit -n 65535”來(lái)設(shè)置。

二、events模塊

events{
 use epoll;
 worker_connections   65536;
}
  • use epoll;use是個(gè)事件模塊指令,用來(lái)指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是標(biāo)準(zhǔn)的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺(tái)上,而kqueue用在BSD系統(tǒng)中。對(duì)于Linux系統(tǒng),epoll工作模式是首選。在操作系統(tǒng)不支持這些高效模型時(shí)才使用select。
  • worker_connections 65536;每一個(gè)worker進(jìn)程能并發(fā)處理(發(fā)起)的最大連接數(shù)(包含與客戶端或后端被代理服務(wù)器間等所有連接數(shù))。nginx作為反向代理服務(wù)器,計(jì)算公式 最大連接數(shù) = worker_processes * worker_connections/4,所以這里客戶端最大連接數(shù)是65536,這個(gè)可以增到到8192都沒(méi)關(guān)系,看情況而定,但不能超過(guò)后面的worker_rlimit_nofile。當(dāng)nginx作為http服務(wù)器時(shí),計(jì)算公式里面是除以2。進(jìn)程的最大連接數(shù)受Linux系統(tǒng)進(jìn)程的最大打開文件數(shù)限制,在執(zhí)行操作系統(tǒng)命令ulimit -n 65536worker_connections的設(shè)置才能生效。

三、http服務(wù)器

http{
 include    mime.types;
 default_type application/octet-stream;
 #charset gb2312;
 }
  • include是個(gè)主模塊指令,實(shí)現(xiàn)對(duì)配置文件所包含的文件的設(shè)定,可以減少主配置文件的復(fù)雜度。類似于Apache中的include方法。
  • default_type屬于HTTP核心模塊指令,這里設(shè)定默認(rèn)類型為二進(jìn)制流,也就是當(dāng)文件類型未定義時(shí)使用這種方式,例如在沒(méi)有配置PHP環(huán)境時(shí),Nginx是不予解析的,此時(shí),用瀏覽器訪問(wèn)PHP文件就會(huì)出現(xiàn)下載窗口。
  • charset gb2312; 指定客戶端編碼格式。。

3.1 HTTP參數(shù)之客戶端head緩存

server_names_hash_bucket_size 128;
client_header_buffer_size 32k; 
large_client_header_buffers 4 128k; 
client_max_body_size 10m; 
client_body_buffer_size 128k; 
sendfile on ; 
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65 : 
client_body_timeout 60s;
send_timeout 60s;
  • server_names_hash_bucket_size 128;: 服務(wù)器名字的hash表大小。
  • client_header_buffer_size 32k;:用來(lái)指定來(lái)自客戶端請(qǐng)求頭的header buffer 大小。對(duì)于大多數(shù)請(qǐng)求,1K的緩存已經(jīng)足夠了,如果自定義了消息頭或有更大的cookie,可以增大緩存區(qū)大小。
  • large_client_header_buffers 4 128k;:用來(lái)指定客戶端請(qǐng)求中較大的消息頭的緩存最大數(shù)量和大小,4為個(gè)數(shù),128k為大小,最大緩存為4個(gè)128KB。
  • client_max_body_size 8m; : 客戶端請(qǐng)求的最大的單個(gè)文件字節(jié)數(shù)。
  • client_max_body_size 10m; : 允許客戶端請(qǐng)求的最大單文件字節(jié)數(shù)。如果有上傳較大文件,請(qǐng)?jiān)O(shè)置它的限制值。
  • client_body_buffer_size 128k;: 緩沖區(qū)代理緩沖用戶端請(qǐng)求的最大字節(jié)數(shù)。
  • sendfile on ; : 開啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來(lái)輸出文件,減少用戶空間到內(nèi)核空間的上下文切換。對(duì)于普通應(yīng)用設(shè)為 on,如果用來(lái)進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負(fù)載。開啟 tcp_nopush on; 和tcp_nodelay on; 防止網(wǎng)絡(luò)阻塞。
  • keepalive_timeout 65 : : 長(zhǎng)連接超時(shí)時(shí)間,單位是秒,這個(gè)參數(shù)很敏感,涉及瀏覽器的種類、后端服務(wù)器的超時(shí)設(shè)置、操作系統(tǒng)的設(shè)置,可以另外起一片文章了。長(zhǎng)連接請(qǐng)求大量小文件的時(shí)候,可以減少重建連接的開銷,但假如有大文件上傳,65s內(nèi)沒(méi)上傳完成會(huì)導(dǎo)致失敗。如果設(shè)置時(shí)間過(guò)長(zhǎng),用戶又多,長(zhǎng)時(shí)間保持連接會(huì)占用大量資源。
  • client_body_timeout 60s; : 用于設(shè)置客戶端請(qǐng)求主體讀取超時(shí)時(shí)間,默認(rèn)是60s。如果超過(guò)這個(gè)時(shí)間,客戶端還沒(méi)有發(fā)送任何數(shù)據(jù),nginx將返回Request time out(408)錯(cuò)誤。
  • send_timeout : : 用于指定響應(yīng)客戶端的超時(shí)時(shí)間。這個(gè)超時(shí)僅限于兩個(gè)連接活動(dòng)之間的時(shí)間,如果超過(guò)這個(gè)時(shí)間,客戶端沒(méi)有任何活動(dòng),Nginx將會(huì)關(guān)閉連接。

3.2 HTTP參數(shù)之FastCGI參數(shù)

FastCGI相關(guān)參數(shù)是為了改善網(wǎng)站的性能:減少資源占用,提高訪問(wèn)速度。下面參數(shù)看字面意思都能理解。

fastcgi_connect_timeout 300; 
fastcgi_send_timeout 300; 
fastcgi_read_timeout 300; 
fastcgi_buffer_size 64k; 
fastcgi_buffers 4 64k; 
fastcgi_busy_buffers_size 128k; 
fastcgi_temp_file_write_size 128k; 
fastcgi_cache TEST; 
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m; 
fastcgi_cache_valid 200 302 1h; 
fastcgi_cache_valid 301 1d; 
fastcgi_cache_valid any 1m; 
  • fastcgi_connect_timeout 300; 指定連接到后端FastCGI的超時(shí)時(shí)間。
  • fastcgi_send_timeout 300;指定向FastCGI傳送請(qǐng)求的超時(shí)時(shí)間,這個(gè)值是已經(jīng)完成兩次握手后向FastCGI傳送請(qǐng)求的超時(shí)時(shí)間。
  • fastcgi_read_timeout 300;指定接收FastCGI應(yīng)答的超時(shí)時(shí)間,這個(gè)值是已經(jīng)完成兩次握手后接收FastCGI應(yīng)答的超時(shí)時(shí)間。
  • fastcgi_buffer_size 64k; 用于指定讀取FastCGI應(yīng)答第一部分需要多大的緩沖區(qū),這個(gè)值表示將使用1個(gè)64KB的緩沖區(qū)讀取應(yīng)答的第一部分(應(yīng)答頭),可以設(shè)置為fastcgi_buffers選項(xiàng)指定的緩沖區(qū)大小。
  • fastcgi_buffers 4 64k; 指定本地需要用多少和多大的緩沖區(qū)來(lái)緩沖FastCGI的應(yīng)答請(qǐng)求。如果一個(gè)PHP腳本所產(chǎn)生的頁(yè)面大小為256KB,那么會(huì)為其分配4個(gè)64KB的緩沖區(qū)來(lái)緩存;如果頁(yè)面大小大于256KB,那么大于256KB的部分會(huì)緩存到fastcgi_temp指定的路徑中,但是這并不是好方法,因?yàn)閮?nèi)存中的數(shù)據(jù)處理速度要快于硬盤。一般這個(gè)值應(yīng)該為站點(diǎn)中PHP腳本所產(chǎn)生的頁(yè)面大小的中間值,如果站點(diǎn)大部分腳本所產(chǎn)生的頁(yè)面大小為256KB,那么可以把這個(gè)值設(shè)置為“16 16k”、“4 64k”等
  • 。fastcgi_busy_buffers_size 128k; 默認(rèn)值是fastcgi_buffers的兩倍。
  • fastcgi_temp_file_write_size 128k; 表示在寫入緩存文件時(shí)使用多大的數(shù)據(jù)塊,默認(rèn)值是fastcgi_buffers的兩倍。
  • fastcgi_cache TEST; 表示開啟FastCGI緩存并為其指定一個(gè)名稱。開啟緩存非常有用,可以有效降低CPU的負(fù)載,并且防止502錯(cuò)誤的發(fā)生。但是開啟緩存也會(huì)引起很多問(wèn)題,要視具體情況而定。
  • fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m; FastCGI緩存指定一個(gè)文件路徑、目錄結(jié)構(gòu)等級(jí)、關(guān)鍵字區(qū)域存儲(chǔ)時(shí)間和非活動(dòng)刪除時(shí)間。
  • fastcgi_cache_valid 200 302 1h; 用來(lái)指定應(yīng)答代碼的緩存時(shí)間。實(shí)例中的值表示將200和302應(yīng)答緩存一個(gè)小時(shí),將301應(yīng)答緩存1天,其他應(yīng)答均緩存1分鐘。

3.3. HTTP參數(shù)之gzip模塊設(shè)置

gzip on;
gzip_min_length 1k;
gzip_buffers  4 16k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
  • gzip on;開啟gzip壓縮輸出gzip_min_length 1k; 最小壓縮文件大小,頁(yè)面字節(jié)數(shù)從header頭的Content-Length中獲取。默認(rèn)值為0,不管多大頁(yè)面都?jí)嚎s,建議設(shè)置成大于1K的字節(jié)數(shù),小于1K可能會(huì)越壓越大。
  • gzip_buffers 4 16k; 壓縮緩沖區(qū),表示申請(qǐng)四個(gè)16K的內(nèi)存作為壓縮結(jié)果流緩存,默認(rèn)是申請(qǐng)與原始數(shù)據(jù)大小相同的內(nèi)存空間來(lái)存儲(chǔ)gzip壓縮結(jié)果
  • gzip_http_version 1.1; 用于設(shè)置識(shí)別HTTP協(xié)議版本,默認(rèn)是1.1,目前主流瀏覽器都已成指出。(默認(rèn)1.1,前端如果是squid2.5請(qǐng)使用1.0)
  • gzip_comp_level 6; 壓縮等級(jí),1壓縮比最小,處理速度最快,9壓縮比最大,傳輸速度快,但是消耗CPU資源。
  • gzip_types text/plain application/x-javascript text/css application/xml;壓縮類型,默認(rèn)就已經(jīng)包含text/html,所以下面就不用再寫了,寫上去也不會(huì)有問(wèn)題,但是會(huì)有一個(gè)warn。
  • gzip_vary on; 和http頭有關(guān)系,會(huì)在響應(yīng)頭加個(gè) Vary: Accept-Encoding ,可以讓前端的緩存服務(wù)器緩存經(jīng)過(guò)gzip壓縮的頁(yè)面,例如,用Squid緩存經(jīng)過(guò)Nginx壓縮的數(shù)據(jù)。
  • gzip_proxied any; Nginx作為反向代理的時(shí)候啟用,決定開啟或者關(guān)閉后端服務(wù)器返回的結(jié)果是否壓縮,匹配的前提是后端服務(wù)器必須要返回包含”Via”的 header頭。
  • limit_zone crawler $binary_remote_addr 10m; 開啟限制IP連接數(shù)的時(shí)候需要使用

四、nginx 配置虛擬主機(jī)

4.1 配置虛擬主機(jī)流程

  • 復(fù)制一段完整的server標(biāo)簽段,到結(jié)尾。注意:要放在http的結(jié)束大括號(hào)前,也就是server標(biāo)簽段放入http標(biāo)簽。
  • 更改server_name 及對(duì)應(yīng)網(wǎng)頁(yè)的root根目錄。
  • 檢查配置文件語(yǔ)法,平滑重啟服務(wù)。
  • 創(chuàng)建server_name 對(duì)應(yīng)網(wǎng)頁(yè)的根目錄,并且建立測(cè)試文件,如果沒(méi)有index首頁(yè)會(huì)出現(xiàn)403錯(cuò)誤。
  • 對(duì)客戶端server_name 的主機(jī)做host 解析或DNS配置。并檢查(ping)。
  • 瀏覽器訪問(wèn),或者在Linux客戶端做host解析,用wget或curl 訪問(wèn)。

http服務(wù)上支持若干虛擬主機(jī)。每個(gè)虛擬主機(jī)一個(gè)對(duì)應(yīng)的server配置項(xiàng),配置項(xiàng)里面包含該虛擬主機(jī)相關(guān)的配置。在提供mail服務(wù)的代理時(shí),也可以建立若干server。每個(gè)server通過(guò)監(jiān)聽地址或端口來(lái)區(qū)分。

server{
  listen 80 default;
  server_name _;
  index index.html index.htm index.php;
  root /data/htdocs/www;
  #server_name_in_redirect off;
  
  location ~ .*\.(php|php5)?${
   #fastcgi_pass unix:/tmp/php-cgi.sock;
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   include fcgi.conf;
  }
  
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${
   expires   30d;
  }
  
  location ~ .*\.(js|css)?${
   expires   1h;
  }
 }
  • listen 80; 監(jiān)聽端口,默認(rèn)80,小于1024的要以root啟動(dòng)??梢詾閘isten *:80、listen 127.0.0.1:80等形式。
  • server_name blog.biglittleant.cn; 服務(wù)器名,如localhost、www.example.com,可以通過(guò)正則匹配。
  • root /var/www/html 定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置。如果locationURL匹配的是子目錄或文件,root沒(méi)什么作用,一般放在server指令里面或/下。
  • index index.jsp index.html index.htm 定義路徑下默認(rèn)訪問(wèn)的文件名,一般跟著root放。

4.2 sever模塊下location模塊的寫法

關(guān)于location匹配規(guī)則的寫法,參考死磕nginx系列–使用nginx做負(fù)載均衡

proxy_pass http://backend

請(qǐng)求轉(zhuǎn)向backend定義的服務(wù)器列表,即反向代理,對(duì)應(yīng)upstream負(fù)載均衡器。也可以proxy_pass http://ip:port。

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

五、其它nginx參數(shù)

5.1 訪問(wèn)控制 allow/deny

Nginx 的訪問(wèn)控制模塊默認(rèn)就會(huì)安裝,而且寫法也非常簡(jiǎn)單,可以分別有多個(gè)allow,deny,允許或禁止某個(gè)ip或ip段訪問(wèn),依次滿足任何一個(gè)規(guī)則就停止往下匹配。如:

location /nginx-status {
 stub_status on;
 access_log off;
# auth_basic  "NginxStatus";
# auth_basic_user_file  /usr/local/nginx-1.6/htpasswd;
 allow 192.168.10.100;
 allow 172.29.73.0/24;
 deny all;
}

我們也常用 httpd-devel 工具的 htpasswd 來(lái)為訪問(wèn)的路徑設(shè)置登錄密碼:

# htpasswd -c htpasswd admin
New passwd:
Re-type new password:
Adding password for user admin
# htpasswd htpasswd admin  //修改admin密碼
# htpasswd htpasswd sean  //多添加一個(gè)認(rèn)證用戶

這樣就生成了默認(rèn)使用CRYPT加密的密碼文件。打開上面nginx-status的兩行注釋,重啟nginx生效。

5.2 列出目錄 autoindex

Nginx默認(rèn)是不允許列出整個(gè)目錄的。如需此功能,打開nginx.conf文件,在location,server 或 http段中加入如下參數(shù):

location /images {
 root  /var/www/nginx-default/images;
 autoindex on;
 autoindex_exact_size off;
 autoindex_localtime on;
 }
  • autoindex on;運(yùn)行列出目錄內(nèi)容。另外兩個(gè)參數(shù)最好也加上去。
  • autoindex_exact_size off; 默認(rèn)為on,顯示出文件的確切大小,單位是bytes。改為off后,顯示出文件的大概大小,單位是kB或者M(jìn)B或者GB。
  • autoindex_localtime on; 默認(rèn)為off,顯示的文件時(shí)間為GMT時(shí)間。改為on后,顯示的文件時(shí)間為文件的服務(wù)器時(shí)間。

六、附錄:通用配置文件

user www www;
worker_processes 2;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid    logs/nginx.pid;
events {
  use epoll;
  worker_connections 2048;
}
http {
  include    mime.types;
  default_type application/octet-stream;
  #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  #         '$status $body_bytes_sent "$http_referer" '
  #         '"$http_user_age

六、附錄:如何查看是否開啟了gzip壓縮

如果response header中包含Content-Encoding:gzip則表示開啟gzip壓縮。

Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html
Date:Wed, 29 Mar 2017 10:55:54 GMT
ETag:W/"58db92af-331a6"
Last-Modified:Wed, 29 Mar 2017 10:55:43 GMT
Server:nginx/1.10.3
Transfer-Encoding:chunked
Vary:Accept-Encoding

參考文檔

Full Example Configuration
優(yōu)化Nginx中FastCGI參數(shù)的實(shí)例
博客 Nginx 配置之性能篇

到此這篇關(guān)于詳解nginx 配置文件解讀的文章就介紹到這了,更多相關(guān)nginx 配置文件內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

美國(guó)穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部