国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

nginx(一):基本配置介紹

liuchengxu / 3288人閱讀

摘要:本博客首發(fā)在,后因各種原因遷移至先來一波官方站點關(guān)于介紹。同時擁有一套緩存機制,可以進一步降低網(wǎng)絡(luò)壓力,加速用戶響應(yīng)。主配置文件中,使用命令引用分支配置文件。接收到一個請求后,先與所有標準進行匹配,并記錄匹配度最高的一個。

本博客首發(fā)在cnblogs,后因各種原因遷移至segmentfault


先來一波官方站點關(guān)于nginx介紹。nginx相關(guān)歷史這里不再贅述啦。

nginx 是免費,開源,高性能 HTTP 服務(wù)器和反向代理服務(wù)器,也可作為IMAP/POP3代理服務(wù)器。nginx以它的高性能,穩(wěn)定性,豐富的特征設(shè)定,配置簡單和資源消耗低而著稱。
nginx是為數(shù)不多可以解決C10K問題的服務(wù)器。不像傳統(tǒng)服務(wù)器,nginx不依賴線程處理請求。它使用的是更為高明事件驅(qū)動(異步)架構(gòu)。在高負荷下,也能保持低消耗,更重要的是可預(yù)估的內(nèi)存占用量。如果你不期望去解決上千的并發(fā)請求難題,你也可以從nginx的高性能,低消耗而嘗到好處。nginx應(yīng)用規(guī)??纱罂尚。盒≈?VPS,大至組建服務(wù)器集群。

1、 了解nginx架構(gòu)

nginx為什么是高性能,低消耗的,可解決高并發(fā)問題

首先是master/worker二層架構(gòu),master負責加載配置文件、管理worker進程、平滑升級;worker負責 處理請求。而且是基于事件驅(qū)動模型設(shè)計的處理模型,這使得

worker數(shù)量和cpu核心數(shù)相當即可,但是一個worker進程可以同時處理多個請求,在高并發(fā)訪問的情況下使用較少的資源從容應(yīng)對。

簡單來講,異步非阻塞,事件驅(qū)動機制是其核心特征。

同時nginx擁有一套緩存機制,可以進一步降低網(wǎng)絡(luò)壓力,加速用戶響應(yīng)。

模塊化設(shè)計

nginx總體設(shè)計理念秉承模塊化設(shè)計思想,把各功能細分模塊進行開發(fā),實現(xiàn)靈活地裝卸載所需模塊,方便后續(xù)功能拓展。

nginx模塊 分為五類

1)核心模塊

2)標準http模塊

3)可選http模塊

4)mail模塊

5)第三方模塊

2、安裝nginx

rpm包,官方預(yù)制,下載地址: http://nginx.org/packages

編譯安裝:編譯安裝根據(jù)需要選擇編譯的模塊,因人而異,下例僅供參考

yum install pcre-devel openssl-devel zlib-devel
useradd -r nginx
./configure --prefix=/usr/local/nginx  --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio
make && make install
3、了解nginx配置

主配置文件:nginx.conf從此處為入口,開始你的nginx配置吧。主配置文件中,使用include命令引用分支配置文件。

nginx配置風格為劃地而治,要嚴格按照模塊為區(qū)域進行配置

配置結(jié)構(gòu)如下:

main block:主配置段,也即全局配置段;
event {
...
事件驅(qū)動相關(guān)的配置;

}

http {
...
http/https 協(xié)議相關(guān)的配置段;

}
mail {
...
mail相關(guān)模塊

}

stream {
...
tcp/udp 傳輸層負載均衡配置段;

}
再來講講配置語法

directive value...; #語法格式

(1) 指令必須以分號結(jié)尾;
(2) 支持使用配置變量;
內(nèi)建變量:由Nginx模塊引入,可直接引用;
自定義變量:由用戶使用set命令定義;
set variable_name value;
引用變量:$variable_name
內(nèi)建變量傳送門:http://nginx.org/en/docs/vari... 數(shù)量繁多,用起來也是非常方便滴,想用什么變量,來這里查查。

4、 配置nginx,從基礎(chǔ)開始

主配置段

1、定義進程用戶,用戶組

user username usergroup;

默認為nobody。 指定一個系統(tǒng)用戶。

2、定義主程序pid文件路徑

pid /PATH/TO/PID_FILE;

3、 引入分支配置文件

include file;

~ include conf.d/*.conf
“~”在本文中表示配置實例語句

4、裝載動態(tài)模塊

load_modulefile;

~ load_module modules/ngx_mail_module.so;

5、error 日志

error_logfile[level]

~ error_log logs/error.log info

5、主配置段中,性能調(diào)優(yōu)的指令

1、指定worker數(shù)量

worker_processes number | auto;

數(shù)量最宜和cpu核心數(shù)相同。

2、綁定worker與cpu核心對應(yīng)關(guān)系

worker_cpu_affinity auto | cpumask;

如果不設(shè)置此項,worker會在不同的工作內(nèi)核上切換,這會造成不必要的開銷,將它們固定起來就好,一般設(shè)置為auto即可。

worker_cpu_affinity0001 0010 0100 1000 #指定cpumask例子

3、指定worker進程的nice值 范圍[-20,20]

worker_priority number;

4、設(shè)置worker打開文件數(shù)量限制

worker_rlimit_nofile number;

~ worker_rlimit_nofile 2390251

當然系統(tǒng)內(nèi)核參數(shù)要改大,sysctl -w fs.file-max=2390251;sysctl -p

6、Event 區(qū)域設(shè)置

1、每個worker進程所能夠打開的最大并發(fā)連接數(shù)數(shù)量;

worker_connections number;

~ worker_connections 65535; #一般設(shè)置為65535,最大端口數(shù)量

2、指明并發(fā)連接請求的處理方法;
use method;

~ use epoll; #linux平臺
3、網(wǎng)絡(luò)連接序列化
accept_mutex on | off;

處理新的連接請求的方法;on表示開啟網(wǎng)絡(luò)連接序列化,避免“驚群”效應(yīng)——即一個新連接請求,所有worker進程都被激活。建議開啟
4、多路接收

multi_accept on|off;

on表示一個worker同時接受盡可能多的請求。建議開啟

7、Http區(qū)域設(shè)置---進階開始

1、配置虛擬主機:server

使用server指令配置虛擬主機,一般格式如下:

server {
  listen address[:PORT]|PORT;
  server_name SERVER_NAME;
  root /PATH/TO/DOCUMENT_ROOT;

}

1.1 listen 指令

配置監(jiān)聽地址,端口指令

有三種形式:

1) listen address[:port] [args..];

  監(jiān)聽在指定IP,指定端口;當端口省略時,監(jiān)聽所有端口

2) listen port [args...];

  監(jiān)聽主機所有IP的80端口

3) listen unix:path [args...];

  監(jiān)聽unix socket,一種本機內(nèi)部通信IPC機制,非重點。

-----介紹上面[args] 內(nèi)容:

listen address[:port] [default_server] [ssl] [http2 | spdy] [backlog=number] [rcvbuf=size] [sndbuf=size]

default_server: 標識符,表示此虛擬主機為address:port 的默認主機

ssl:標識符,虛擬主機使用https協(xié)議通信時,標識此項

backlog=number:設(shè)置允許同時最大網(wǎng)絡(luò)監(jiān)聽連接處于掛起狀態(tài)的個數(shù),默認為511

rcvbuf=size:設(shè)置監(jiān)聽socket接收緩沖區(qū)大小

sndbuf=size:設(shè)置監(jiān)聽socket發(fā)送緩沖區(qū)大小

-----小結(jié):

一般listen 指令無需太過復(fù)雜

~ listen 10.1.0.1:8080 default_server backlog=1024

~ listen 8080;

1.2 server_name 指令

使用server_name 指令配置基于名稱或基于IP的虛擬主機

1)基于名稱的虛擬主機

格式: server_name name... 允許跟多個名稱,空格符分隔

------name支持glob通配符*

*可以出現(xiàn)在三段式名稱中的首段或尾段;以及兩段式名稱中的尾段

server_name  *.cutemsyu.com  www.cutemsyu.*  cutemsyu.*;

------name支持正則表達式~

以~起始表示正則表達式標記

server_name ~^wwwd+.cutemsyu.com$

其中d代表數(shù)字0-9,像這樣的表達式可匹配www1.cutemsyu.com,www2.cutemsyu.com 等等

拓展:nginx 支持name 正則表達式字符捕捉功能

server_name ~^(1+).cutemsyu.com$

如此定義,當該表示式匹配www.cutemsyu.com 名稱時,在server塊中可使用$1 表示 www 字符串

-----關(guān)于一個名稱被多個表達式匹配的問題

如果一個主機配置多個虛擬主機,則有可能發(fā)生此種情況

nginx有如下server_name 匹配規(guī)定:

對于一個名稱匹配多個表達式情況,按以下規(guī)則處理,排在前面優(yōu)先級高

1.準確匹配

2.左側(cè)*通配符

3.右側(cè)*通配符

4.正則表達式

如果被同一級別的多個表達式匹配,則按第一個匹配的表達式處理

2)基于IP的虛擬主機

用法: server_name  IP;

1.3 配置請求根目錄指令:root

root指令定義根路徑目錄,可定義在http,server,location塊;

語法:root  path;

web服務(wù)器接收到請求后,首先在根目錄下尋找資源。后面會介紹location塊,root在location用到的情況比較多。

2、配置location塊

用法:

location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }

應(yīng)用在server塊中,或在location塊中嵌套使用。

在一個server中l(wèi)ocation配置段可存在多個,用于實現(xiàn)從uri到文件系統(tǒng)的路徑映射;ngnix會根據(jù)用戶請求的URI來檢查定義的所有l(wèi)ocation,并找出一個最佳匹配,而后應(yīng)用其配置;

uri部分方便下面敘述,稱不含正則表達式的uri為標準uri;反之,含有正則的uri稱為正則uri,而且正則uri 前必須使用~或~*。同時支持正則字符串捕捉,使用$1等應(yīng)用。

[ = | ~ | ~* | ^~ ] 這部分符號是具有特殊定義的符號,表示特定含義,可省略。

server接收到一個請求uri后,先與所有標準uri進行匹配,并記錄匹配度最高的一個。然后按序與正則uri進行匹配,匹配到第一個正則uri后,立即按相應(yīng)location塊處理。如果所有正則匹配失敗,則應(yīng)用之前記錄的標準uri對應(yīng)的location塊進行處理。

1) = 使用在標準uri前,表示精準匹配,如果請求uri與此對應(yīng),則該請求立即由該location塊進行處理,不再與正則uri匹配。

2) ~ 使用在正則uri前,并且區(qū)分大小寫字母

3) ~* 使用在正則uri前,不區(qū)分大小寫字母

4) ^~ 使用在標準uri前,要求與標準uri匹配,找到匹配度最高的一個后不進行與正則uri匹配

如,對于"/" 的請求較多的話,使用以下定義

  location = / {

    ....

  }

則能實現(xiàn)快速匹配。

看一看nginx官方文檔給出的例子:

location = / {
    [ configuration A ]
}

location / {
    [ configuration B ]
}

location /documents/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* .(gif|jpg|jpeg)$ {
    [ configuration E ]
}

請求URI            應(yīng)用的location配置

/            configuration A

/index.html         configuration B

/documents/document.html   configuration C

/images/1.gif          configuration D

/documents/1.jpg     configuration E

至于@name 形式的location,是用來處理重定向類型的請求。在try_files 指令中會提到。

3、路徑重定向類的指令

3.1 路徑別名 alias

用法: alias  path;

定義路徑別名,文檔映射的另一種機制;僅能用于location上下文。

與root 指令容易混淆。參考下面示例

  location /data {

    alias  /documents/www;

   ?。?/p>

請求uri為/data/index.html,則nginx服務(wù)器將在路徑 /documents/www 下尋找index.html 文件。

3.2 設(shè)置網(wǎng)站默認首頁

作用是用戶不需輸入完整的uri來訪問默認主頁

用法: index  filename... ;

可設(shè)置多個默認網(wǎng)頁,如果前一個頁面文件不存在則顯示下一頁面文件,以此類推。

3.3 錯誤頁面重定向

用法:error_page code ... [=[response]] uri|path;

當客戶端訪問遇到問題時,nginx支持自定義錯誤頁面顯示,并返回一個指定狀態(tài)碼,如果指定的話。

作用域為 http,server,location 。具有在子域有效的特征。

  Example:

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
此示例跳轉(zhuǎn)的資源使用相對路徑方式,意味著從定義的根路徑下查找文件。

  Example:

error_page 404 =200 /empty.gif;
此示例指定轉(zhuǎn)換的狀態(tài)碼。

  Example:

error_page 404 = /404.php;
如果響應(yīng)的錯誤狀態(tài)碼來自代理服務(wù)器,或者FastCGI/uwsgi/SCGI 服務(wù)器,應(yīng)使用該示例方式返回代理服務(wù)器返回的狀態(tài)碼。

  Example:

error_page 403 http://example.com/forbidden....
error_page 404 =301 http://example.com/notfound.h...
該示例重定向為一個指定uri。此種情況重定向的狀態(tài)碼為302??尚薷臑?301,302,303,307。

3.4 嘗試查找文件

用法: try_files file ... uri;

    try_files file ... =code;

按順序檢查文件,如果都不存在,則定向最后一個參數(shù)。最后一個參數(shù)如果是文件則必須存在;可以是狀態(tài)碼;內(nèi)部重定向。

  example:

location /images/ {
    try_files $uri /images/default.gif;
}
location / {
    try_files $uri $uri/index.html $uri.html =404;
}

  example:重定向型

location / {
    try_files $uri $uri/ @wordpress;
}

location ~ .php$ {
    try_files $uri @wordpress;         #這里使用重定向,如果請求的資源頁不在會自動跳轉(zhuǎn)@wordpress塊中的index.php。如果使用uri的話,不會顯示動態(tài)資源頁面。

    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
    ... other fastcgi_param"s
}

location @wordpress {
    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to/index.php;
    ... other fastcgi_param"s
}

4、套接字相關(guān)配置

   作用域:http, server, location

4.1 tcp_nodelay on | off;

  在keepalived模式下的連接是否啟用TCP_NODELAY選項;默認開啟;建議開啟

4.2 sendfile on|off;

  是否開啟sendfile 特性,減少數(shù)據(jù)在內(nèi)核與用戶空間之間的copy次數(shù)。建議開啟。詳見標題6內(nèi)容

4.3 sendfile_max_chunk size;

  worker process 每次調(diào)用sendfile() 傳輸數(shù)據(jù)的最大值,減少一次調(diào)用sendfile()最大阻塞時長,0為不限制,建議設(shè)置128K

5、定義客戶端請求的相關(guān)配置

作用域:http, server, location

5.1 keepalive_timeout timeout [header_timeout];
  設(shè)定保持連接的超時時長,0表示禁止長連接;默認為75s;header_timeout 可選項,在應(yīng)答報文首部中表示keepalive超時時間

5.2 keepalive_requests number;
  在一次長連接上所允許請求的資源的最大數(shù)量,默認為100;

5.3 keepalive_disable none | browser ...;
  對哪種瀏覽器禁用長連接;

5.4 send_timeout time;
  向客戶端發(fā)送響應(yīng)報文的超時時長,此處,是指兩次寫操作之間的間隔時長;如果客戶端在規(guī)定時長內(nèi)無任何活動則關(guān)閉連接

  ~ send_timeout 10s;

5.5 client_header_buffer_size size;
  設(shè)置客戶端請求報文首部緩沖區(qū)大小,默認值為1K。有時客戶端請求首部帶有cookie很大的信息,會造成400錯誤,強烈建議增大大小

  大小設(shè)置為系統(tǒng)分頁大小,命令 getconf PAGESIZE 可查看

  一般設(shè)置為 client_header_buffer_size 4K;
5.6 client_body_buffer_size size;
  用于接收客戶端請求報文的body部分的緩沖區(qū)大??;默認為16k;超出此大小時,其將被暫存到磁盤上的由client_body_temp_path指令所定義的位置;

5.7 client_body_temp_path path [level1 [level2 [level3]]];
  設(shè)定用于存儲客戶端請求報文的body部分的臨時存儲路徑及子目錄結(jié)構(gòu)和數(shù)量;16進制的數(shù)字;

  client_body_temp_path path /var/tmp/client_body 1 2 2 #可定義在高性能磁盤分區(qū)上

6、文件操作優(yōu)化的配置

作用域:http, server, location

6.1 aio on | off | threads[=pool];
  是否啟用aio功能;

6.2 directio size | off;
  在Linux主機啟用O_DIRECT標記,此處意味文件大于等于給定的大小時使用,例如directio 4m;
6.3 directio_alignment size;

  為directio設(shè)置 alignment 大小,默認512字節(jié),一般不用調(diào)整。但是xfs 文件系統(tǒng)需要增大至4k。

--------這里花一定篇幅講講aio,directio,和sendfile之間的關(guān)系-------

首先aio和sendfile是互相排斥的。啟用aio,必須也啟用directio,不然的話read()將成為阻塞。

sendfile適合小文件,占用的是系統(tǒng)緩存。當傳輸大文件時,而且系統(tǒng)內(nèi)存不夠大的情況,使用sendfile()將較不適宜。此時應(yīng)使用aio機制。

推薦的一個配置示例:文件小于8M,使用sendfile,大于或等于8M使用aio

location /video/ {

sendfile       on;

  sendfiel_max_chunk 256K;

aio            on;
directio       8m;

  output_buffers 1 128k;
}
特別地,在大文件傳輸較多的情況下,適宜啟用aio threads 。nginx編譯需要--with-threads 選項

location /video/ {

sendfile       on;

  sendfiel_max_chunk 256K;

aio            threads;      #這里使用默認的線程池,可自行創(chuàng)建。
directio       8m;

  output_buffers 1 128k;
}

6.4 open_file_cache off;
open_file_cache max=N [inactive=time];
nginx可以緩存以下三種信息:
(1) 文件的描述符、文件大小和最近一次的修改時間;
(2) 打開的目錄結(jié)構(gòu);
(3) 沒有找到的或者沒有權(quán)限訪問的文件的相關(guān)信息;

max=N:可緩存的緩存項上限;達到上限后會使用LRU算法實現(xiàn)緩存管理;

inactive=time:緩存項的非活動時長,在此處指定的時長內(nèi)未被命中的或命中的次數(shù)少于open_file_cache_min_users指令所指定的次數(shù)的緩存項即為非活動項;

6.5 open_file_cache_valid time;
緩存項有效性的檢查頻率;默認為60s;

6.6 open_file_cache_min_uses number;
在open_file_cache指令的inactive參數(shù)指定的時長內(nèi),至少應(yīng)該被命中多少次方可被歸類為活動項;

6.7 open_file_cache_errors on | off;
是否緩存查找時發(fā)生錯誤的文件一類的信息;

  Example:

open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

本篇就介紹到這里,nginx余下內(nèi)容請關(guān)注后續(xù)博客。


. ?

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/39422.html

相關(guān)文章

  • java+Nginx 阿里云部署

    摘要:由于我是項目,所以需要先下載,這里你可以用源下載,也可以直接下載解壓包進行解壓,具體的實現(xiàn)可參考傳送門。這里要補充的是由于我的項目框架是有內(nèi)嵌,所以無需配置。 這兩天剛好工作比較多,包括將項目部署到阿里云中,外面公司需要我們將多數(shù)據(jù)源數(shù)據(jù)進行處理(這里涉及到kettle)等,所以做了挺多事,也踩了挺多的坑,之前一直在用CSDN,但是發(fā)現(xiàn)CSDN更多的是技術(shù)博文,而我想用記敘形式的方式...

    Anchorer 評論0 收藏0
  • Nginx

    摘要:此外,其也能夠提供強大的反向代理功能。是由為俄羅斯訪問量第二的站點開發(fā)的,第一個公開版本發(fā)布于年月日。 keepalived+nginx 實現(xiàn)高可用雙機熱備 + 負載均衡架構(gòu) 1 準備4個ubuntu16.04虛擬機(啟用網(wǎng)卡二并使用橋接模式):A服務(wù)器:192.168.0.103 主B服務(wù)器:192.168.0.104 主(備) 前端工程師學習 Nginx ...

    syoya 評論0 收藏0
  • Nginx介紹和使用

    摘要:介紹和使用一介紹是一個十分輕量級并且高性能和反向代理服務(wù)器,同樣也是一個代理服務(wù)器。如果沒有匹配的正則,則使用前面記錄的最長匹配前綴字符。使用精確匹配可以提高查找的速度。例如經(jīng)常請求的話,可以使用來定義。 Nginx介紹和使用 一、介紹 Nginx是一個十分輕量級并且高性能HTTP和反向代理服務(wù)器,同樣也是一個IMAP/POP3/SMTP代理服務(wù)器。 二、特性 HTTP服務(wù)器 反向代...

    UsherChen 評論0 收藏0
  • 利用 NGINX 最大化 Python 性能,第部分:Web 服務(wù)和緩存

    摘要:無論是將其用作的服務(wù)器反向代理服務(wù)器負載均衡器,還是同時使用以上三種功能,和都能帶來很大好處。再就是下篇文章會介紹如何把和當作反向代理服務(wù)器和多個應(yīng)用程序服務(wù)器的負載均衡器。而使用將會有助于解決這一問題。 【編者按】本文主要介紹 nginx 的主要功能以及如何通過 NGINX 優(yōu)化 Python 應(yīng)用性能。本文系國內(nèi) ITOM 管理平臺 OneAPM 編譯呈現(xiàn)。 Python 的著名之...

    1treeS 評論0 收藏0
  • 利用 NGINX 最大化 Python 性能,第部分:Web 服務(wù)和緩存

    摘要:無論是將其用作的服務(wù)器反向代理服務(wù)器負載均衡器,還是同時使用以上三種功能,和都能帶來很大好處。再就是下篇文章會介紹如何把和當作反向代理服務(wù)器和多個應(yīng)用程序服務(wù)器的負載均衡器。而使用將會有助于解決這一問題。 【編者按】本文主要介紹 nginx 的主要功能以及如何通過 NGINX 優(yōu)化 Python 應(yīng)用性能。本文系國內(nèi) ITOM 管理平臺 OneAPM 編譯呈現(xiàn)。 Python 的著名之...

    v1 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<