nginx.conf配置文件

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 nginx.conf配置文件,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

默认配置文件

开头的表示注释内容

  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个

[root@mylinux2 conf]# ps -ef | grep nginx
root       1529      1  0 08:47 ?        00:00:00 nginx: master process nginx
nobody     1530   1529  0 08:47 ?        00:00:00 nginx: worker process
nobody     1531   1529  0 08:47 ?        00:00:00 nginx: worker process
nobody     1532   1529  0 08:47 ?        00:00:00 nginx: worker process
nobody     1533   1529  0 08:47 ?        00:00:00 nginx: worker process
nobody     1534   1529  0 08:47 ?        00:00:00 nginx: worker process
nobody     1535   1529  0 08:47 ?        00:00:00 nginx: worker process
nobody     1536   1529  0 08:47 ?        00:00:00 nginx: worker process
nobody     1537   1529  0 08:47 ?        00:00:00 nginx: worker process
root       1546   1472  0 08:55 pts/0    00:00:00 grep --color=auto nginx

events {   
	worker_connections 1024;
}

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
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123377.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!