nginx.conf配置文件
默認配置文件
開頭的表示注釋內容
1 2 #user nobody;3 worker_processes 1;4 5 #error_log logs/error.log;6 #error_log logs/error.log notice;7 #error_log logs/error.log info;8 #error_log "pipe:rollback logs/error_log interval=1d baknum=7 maxsize=2G";9 10 #pid logs/nginx.pid;11 12 13 events {14 worker_connections 1024;15 }16 17 18 http {19 include mime.types;20 default_type application/octet-stream;21 22 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '23 # '$status $body_bytes_sent "$http_referer" '24 # '"$http_user_agent" "$http_x_forwarded_for"';25 26 #access_log logs/access.log main;27 #access_log "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G" main;28 29 sendfile on;30 #tcp_nopush on;從配置文件開始到 events 塊之間的內容,主要會設置一些影響nginx 服務器整體運行的配置指令,主要包括配置運行 Nginx 服務器的用戶(組)、允許生成的 worker process 數,進程 PID 存放路徑、日志存放路徑和類型以及配置文件的引入等。
比如上面第一行配置的:
worker_processes 1;這是 Nginx 服務器并發處理服務的關鍵配置,worker_processes 值越大,可以支持的并發處理量也越多,但是會受到硬件、軟件等設備的制約,一般有多少個CPU核就配置多少。
我將worker_processes設置成8;一共啟動8個工作進程,master進程只有1個
events 塊涉及的指令主要影響 Nginx 服務器與用戶的網絡連接,常用的設置包括是否開啟對多 work process 下的網絡連接進行序列化,是否允許同時接收多個網絡連接,選取哪種事件驅動模型來處理連接請求,每個 word process 可以同時支持的最大連接數等。
上述例子就表示每個 work process 支持的最大連接數為 1024.
這部分的配置對 Nginx 的性能影響較大,在實際中應該靈活配置。
一、http 全局塊
http全局塊配置的指令包括文件引入、MIME-TYPE 定義、日志自定義、連接超時時間、單鏈接請求數上限等。
18 http {19 include mime.types;29 sendfile on;33 keepalive_timeout 65;37 server {38 listen 80;39 server_name localhost;45 46 location / {47 root html;48 index index.html index.htm;49 }error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}二、server 塊
這塊和虛擬主機有密切關系,虛擬主機從用戶角度看,和一臺獨立的硬件主機是完全一樣的,該技術的產生是為了節省互聯網服務器硬件成本。后面會詳細介紹虛擬主機的概念。
每個 http 塊可以包括多個 server 塊,而每個 server 塊就相當于一個虛擬主機。
而每個 server 塊也分為全局 server 塊,以及可以同時包含多個 locaton 塊。
1、全局 server 塊
最常見的配置是本虛擬機主機的監聽配置和本虛擬主機的名稱或IP配置。
1)、listen
該指令用于配置網絡監聽。主要有如下三種配置語法結構:
1 listen *:80 | *:8080 #監聽所有80端口和8080端口 2 listen IP_address:port #監聽指定的地址和端口號 3 listen IP_address #監聽指定ip地址所有端口 4 listen port #監聽該端口的所有IP連接2)、server_name
該指令用于虛擬主機的配置。通常分為以下兩種:
a、基于名稱的虛擬主機配置
語法格式如下:
server_name www.abc123.com;b、基于 IP 地址的虛擬主機配置
語法結構和基于域名匹配一樣,而且不需要考慮通配符和正則表達式的問題。
server_name 192.168.1.1案例1:通過nginx設置了2臺虛擬主機,讓不同的域名訪問不同的目錄,Nginx的虛擬機主機Server配置(配置百度項目和騰訊項目)
server {listen 80;server_name www.server1.com;location / {root /usr/local/tengine-2.3/baidu;index index.html index.htm;}}server {listen 80;server_name www.server2.com;location / {root /usr/local/tengine-2.3/qq;index index.html index.htm;}}訪問服務器
用戶訪問百度的過程,而我們配置hosts的目的則是不用訪問DNS服務器
2、location 塊
一個 server 塊可以配置多個 location 塊。
這塊的主要作用是基于 Nginx 服務器接收到的請求字符串(例如 server_name/uri-string),對虛擬主機名稱(也可以是IP別名)之外的字符串(例如 前面的 /uri-string)進行匹配,對特定的請求進行處理。地址定向、數據緩存和應答控制等功能,還有許多第三方模塊的配置也在這里進行。
該指令用于匹配 URL。
語法如下:
location [ = | ~ | ~* | ^~] uri { }1、= :用于不含正則表達式的 uri 前,要求請求字符串與 uri 嚴格匹配,如果匹配成功,就停止繼續向下搜索并立即處理該請求。
2、~:用于表示 uri 包含正則表達式,并且區分大小寫。
3、~*:用于表示 uri 包含正則表達式,并且不區分大小寫。
4、^~:用于不含正則表達式的 uri 前,要求 Nginx 服務器找到標識 uri 和請求字符串匹配度最高的 location 后,立即使用此 location 處理請求,而不再使用 location 塊中的正則 uri 和請求字符串做匹配。
注意:如果 uri 包含正則表達式,則必須要有 ~ 或者 ~* 標識。
優先級: = > ^~ > ~ / ~* >模糊匹配
案例2
訪問http://www.server1.com/abc.html,會到/usr/local/tengine-2.3/baidu目錄下找abc.html文件,abc.html一定是精確匹配
訪問http://www.server1.com/zilv.html,會匹配成功,會到/usr/local/tengine-2.3/qq目錄下找zilv.html文件,但是qq目錄下根本就沒有zilv.html文件,所以找不到。模糊匹配
訪問http://www.server1.com/index.html,會匹配成功,會到/usr/local/tengine-2.3/qq目錄下找index.html文件,而qq目錄下有index.html文件,所以會有返回
訪問http://www.server1.com/documents,會匹配成功(能匹配到2個,分別為’/‘和‘/documents/’,’/'的優先級最低,),會到/usr/local/tengine-2.3/baidu目錄下找index.html文件,而/baidu目錄下有index.html文件,所以會有返回
37 server {38 listen 80;39 server_name www.server1.com;51 location = /abc.html {52 root /usr/local/tengine-2.3/baidu;53 }54 location / {55 index index.html;56 root /usr/local/tengine-2.3/qq;57 }58 location /documents/ {59 root /usr/local/tengine-2.3/baidu;60 }61 location ^~ /images/ {62 root /usr/local/tengine-2.3/baidu;63 }64 location ~* \.(gif|jpg|jepg)$ {65 root /usr/local/tengine-2.3/baidu;66 }3、index
該指令用于設置網站的默認首頁。
語法為:
index filename ...;后面的文件名稱可以有多個,中間用空格隔開。
index index.html index.htm;通常該指令有兩個作用:第一個是用戶在請求訪問網站時,請求地址可以不寫首頁名稱;第二個是可以對一個請求,根據請求內容而設置不同的首頁。
location / {root /usr/local/tengine-2.3/baidu;index index.html index.htm;}案例3
訪問http://www.server1.com/index.html
訪問http://www.server1.com/index.htm
總結
以上是生活随笔為你收集整理的nginx.conf配置文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tengine怎么去安装第三方模块、以及
- 下一篇: nginx常用功能介绍