3.nginx配置文件

ngnix.conf配置文件
  • 目录结构
...                            #全局块
events{                        #events 块
    ...
}
http{                          #http 块
    ...                        #http 全局块
    server{                    #server 块
        ...                    #server 全局块
        location [PATTERN]{    #location 块
            ...
        }
        location [PATTERN]{    #location 块
            ...
        }
    }
    server{                    #server 块
        ...
    }
    ...                        #http 全局块
}

1.全局块
全局块是默认配置文件从开始到events块之间的一部分内容,主要设置一些影响Nginx服务器整体运行的配置指令,因此,这些指令的作用域是Nginx服务器全局。
通常包括配置运行Nginx 服务器的用户(组)、允许生成的worker process数、Nginx 进程 PID存放路径、日志的存放路径和类型以及配置文件引入等。

2.events 块
events 块涉及的指令主要影响Nginx 服务器与用户的网络连接。常用到的设置包括是否开启对多worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型处理连接请求,每个 worker process可以同时支持的最大连接数等。
这一部分指令对 Nginx服务器的性能影响较大,在实际配置中应该根据实际情况灵活调整。

3.http 块
http块是Nginx 服务器配置中的重要部分,代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都可以放在这个模块。可以在 http全局块中配置的指令包括文件引入、MIME-Type定义、日志自定义、是否使用sendfile传输文件、连接超时时间、单连接q 请求数上限等。

4.server 块
server 块和“虚拟主机”的概念有密切联系。在 server 全局块中,最常见的两个配置项是本虚拟主机的监听配置和本虚拟主机的名称或 IP 配置。

5.location 块
location 块的主要作用是,基于Nginx服务器接受到的q 请求字符串,对除虚拟主机名称之外的字符串j 进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能都是在这部分实现。许多第三方模块的配置也是在location块中提供功能。
配置运行Nginx服务器用户(组)
user user [group];

user,指定可以运行Nginx服务器的用户。
group,可选项,指定可以运行Nginx 服务器的用户组。

注意:在 Nginx 配置文件中,每一条指令都必须以分号结束,请不要忘记。
配置允许生成的worker process数
worker process是 Nginx服务器实现并发处理服务的关键所在。从理论上来说,worker process的值越大,可以支持的并发处理量也越多,
但实际上它还要受到来自软件本身、操作系统本身资源和能力、硬件设备等的制约。
配置Nginx进程PID存放路径
Nginx进程作为系统的守护进程,我们需要在某文件中保存当前运行程序的主进程号。
Nginx 支持对它的存放路径进行自定义配置,指令是 pid,其语法格式为
  • pid file;
  • 其中,file 指定存放路径和文件名称。
配置错误日志的存放路径
error_log file | stderr [debug | info | notice | warn | error | crit | alert | emerg];
设置网络连接的序列化
Nginx配置中包含了这样一条指令 accept_mutex,当其设置为开启的时候,将会对多个Nginx进程接收连接进行序列化,
防止多个进程对连接的争抢。其语法结构为
此指令默认为开启('ON')状态,其只能在events块中进行配置。
  • accept_mutex on | off;
置是否允许同时接收多个网络连接
每个 Nginx 服务器的worker process 都有能力同时接收多个新到达的网络连接,但是这需要在配置文件中进行设置,其指令为 multi_accept,语法结构为:
此指令默认为关闭(off)状态,即每个 worker process一次只能接收一个新到达的网络连接。此指令只能在events块中进行配置。
  • multi_accept on | off
配置最大连接数
指令worker_connections主要用来设置允许每一个worker process同时开启的最大连接数。其语法结构为:
worker_connections number;

注意:这里的 Number不仅仅包括和前端用户建立的连接数,而是包括所有可能的连接数。另外,number 值不能大于操作系统支持打开的最大文件句柄数量。
此指令只能在events块中进行配置。
定义MIME-Type
#引入外部文件mime.types
include       mime.types;        #以下指令在 http部分中生效
default_type  application/octet-stream;

types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;
    application/javascript
...
第二行中使用指令default_type配置了用于处理前端请求的 MIME类型,其语法结构为:

default_type mime-type;

其中,mime-type为 types 块中定义的MIME-type,如果不加此指令,默认值为text/plain。
此指令还可以在 http 块、server 块或者location块中进行配置。
自定义服务日志
不同于errer_log nginx进程运行的日志
access_log提供服务器应答前端的日志记录

access_log path [format [buffer=size]];

path:配置服务日志的文件存放路径和名称。
format:可选项,自定义服务日志的格式字符串,也可以通过“格式串的名称”使用log_format指令定义好的格式。“格式串的名称”在log_format指令中定义。
size:配置临时存放日志的内存缓存区大小。

#取消日志
access_log off;
和 access_log联合使用的另一个指令是log_format,它专门用于定义服务日志的格式,并且可以为格式字符串定义一个名字,
以便access_log指令可以直接调用。其语法格式
image.png
image.png
配置允许sendfile 方式传输文件
#用于开启或关闭使用sendfile传输文件指令:
sendfile on | off;
#传输数据量大小 0不限制
sendfile_max_chunk size;
sendfile_max_chunk 128k;
配置连接超时时间
与用户建立会话连接后,Nginx 服务器可以保持这些连接打开一段时间,
指令keeplive_timeout就是用来设置此时间的,其语法结构为:

keepalive_timeout timeout [header_timeout];

keepalive_timeout 120s 100s;
单连接请求数上限
Nginx 服务器端和用户端建立会话连接后,用户端通过此连接发送请求。指令keepalive_requests用于限制用户通过某一连接向 Nginx服务器发送请求的次数。其语法结构为:
keepalive_requests number;
基于名称的虚拟主机配置
这里的“主机”,j 就是指此server 块对外提供的虚拟主机。设置了主机的名称并配置好 DNS,用户就可以使用这个名称向此虚拟主机发送请求了。配置主机名称的指令为server_name,其语法结构为:
server_name name ...;

对于 name 来说,可以只有一个名称,也可以由多个名称并列,之间用空格隔开。每个名字就是一个域名,由两段或三段组成,之间由点号“.”隔开。下面是一个简单的示例:
server_name myserver.com www.myserver.com;

#更改hosts文件
vim /etc/host
配置请求的根目录
Web 服务器接受到网络请求后,首先要在服务器端指定目录中寻找请求资源。在 Nginx 服务器中,指令 root就是用来配置这个根目录的,其语法结构为:
root path;
设置网站的默认首页
index file ...;
location ~ ^/data/(.+)/web/ $
{
    index index.$1.html index.my1.html index.html;
}

当 location 块接受到“/data/locationtest/web/”时,匹配成功,它首先将欲置变量$1置为“locationtest”,然后在/data/locationtest/web/路径下按照index 
的配置次序依次寻找index.locationtest.html页、index.my1.html页和index.html页,首先找到哪个页面,就使用哪个页面响应请求。

设置网站的错误页面
error_page code ... [=[response]] uri

code,要处理的HTTP 错误代码。
response,可选项,将 code 指定的错误代码转化为新的错误代码response。
uri,错误页面的路径或者网站地址。如果设置为路径,则是以Nginx服务器安装路径下的html目录为根路径的相对路径;如果设置为网址,则 Nginx 服务器会直接访问该网址获取错误页面,并返回给用户端。
  • 看几个error_page指令的示例:
error_page 404 /404.html;
error_page 403 http://somewebsite.com/forbidden.html;
error_page 404 /404.html
location /404.html
{
    root /myserver/errorpages/
}

基于 IP 配置 Nginx 的访问权限
allow 指令,用于设置允许Nginx的客户端 IP,语法结构为:
allow address | CIDR | all;

address,允许访问的客户端的 IP,不支持同时设置多个。如果有多个 IP需要设置,需要重复使用allow 指令。
CIDR,允许访问的客户端的 CIDR 地址,例如202.80.18.23/25,前面是32位IP 地址,后面“/25”代表该 IP地址前25位是网络部分,其余位代表主机部分。
all,代表允许所有客户端访问。

location / {
    deny 192.168.1.1;
    allow 192.168.1.0/24;
    deny all;
}
配置实例
#### 全局块 开始 ####
# 配置允许运行Nginx服务器的用户和用户组
user  nobody  nobody;
# 配置允许 Nginx 进程生成的 worker process 数
worker_processes  3;
# 配置Nginx服务器运行的错误日志存放路径
error_log  logs/error.log;
# 配置 Nginx 服务器运行时的 pid文件存放路径和名称
pid  logs/nginx.pid;
#### 全局块 结束 ####

#### events 块 开始 ####
events {
    # 配置事件驱动模型
    use epoll;
    # 配置最大连接数
    worker_connections  1024;
}
#### events 块 结束 ####

#### http 块 开始 ####
http {
    # 定义 MIME-Type
    include       mime.types;
    default_type  application/octet-stream;
    # 配置允许使用sendfile方式传输
    sendfile        on;
    # 配置连接超时时间
    keepalive_timeout  65;
    # 配置请求处理日志的格式
    log_format  access.log  '$remote_addr-[$time_local]-"$request"-"$http_user_agent"';

    #### sever 块 开始 ####
    # 配置虚拟主机 myServer1
    server {
        # 配置监听端口和主机名称(基于名称)
        listen       8081;
        server_name  myServer1;
        # 配置请求处理日志存放路径
        access_log  /myweb/server1/log/access.log;
        # 配置错误页面
        error_page  404              /404.html;
        # 配置处理/server1/location1请求的 location
        location /server1/location1 {
            root   /myweb;
            index  index.svr1-loc1.htm;
        }

        # 配置处理/server1/location2请求的 location
        location /server1/location2 {
            root  /myweb;
            index  index.svr1-loc2.htm;
        }
    }


    # 配置虚拟主机 myServer2
    server {
        # 配置监听端口和主机名称(基于名称)
        listen       8082;
        server_name  192.168.1.3;
        # 配置请求处理日志存放路径
        access_log  /myweb/server2/log/access.log;
        # 配置错误页面,对错误页面 404.html做了定向配置
        error_page  404              /404.html;
        # 配置处理/server2/location1请求的 location
        location /server2/location1 {
            root   /myweb;
            index  index.svr2-loc1.htm;
        }

        # 配置处理/svr2/loc2请求的 location
        location /svr2/loc2 {
            # 对 location的 URI进行更改
            alias  /myweb/server2/location2;
            index  index.svr2-loc2.htm;
        }

        # 配置错误页面转向
        location = /404.html {
            root  /myweb/;
            index  404.html;
        }
    }
    #### sever 块 结束 ####
}
#### http 块 结束 ####
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容