1小时拿下 Nginx - 3. Nginx 配置文件详解

Nginx 核心配置文件:nginx.conf。

一、全局配置

1. user  nobody;

user 用来配置 worker 进程运行用户。

2. worker_processes 1;

worker_processes 是配置工程进程数目。

worker_processes 的取值是根据硬件来进行配置。该值一般是和 CPU 数量一致或者是 CPU 数量的2倍。

3. error_log  logs/error.log  info;

配置全局错误日志文件以及日志级别。(默认日志级别为 error)

日志级别有很多种:[debug, info, notice, warn, error, crit, alert, emerg]。

从 debug、info、...... 一直到 emerg,错误严重性是越来越严重。debug 输出日志是最多、最全的,而 error 相比 debug 少很多很多。

4. pid logs/nginx.pid;

配置存储 pid 进程的文件。

5. events

events 是 nginx 和用户交互网络连接优化的配置。

完整配置如下

events{ 
	accept_mutex on; 
	multi_accept on; 
	worker_connections 1024; 
	use [kqueue | rtsig | epoll | /dev/poll | select | poll | eventport]; 
}
  • accept_mutex 可以设置进程是否互斥。这个配置主要用来应对 Nginx 的“惊群效应”。
  • multi_accept 用来设置是否允许同时接收多个网络连接。
  • worker_connections 用来配置单个 worker 进程最大的连接数,默认连接数是1024。(nginx 支持的总连接数=worker_processes * worker_connections)
  • use 是用来设置 Nginx 服务器选择哪种事件驱动来处理网络消息。

“惊群效应”

        简单来说就是多个进程或者线程在等待同一个事件,当事件发生时,所有线程和进程都会被内核唤醒。唤醒后通常只有一个进程获得了该事件并进行处理,其他进程发现获取事件失败后又继续进入了等待状态,在一定程度上降低了系统性能。

        Nginx 后台是以多进程的工作模式,当一个进程进入后,会有多个 worker 进程会被同时唤醒,但是最终只会有一个进程可以获取到连接。如果每次唤醒的进程数目太多,就会影响 Nginx 的整体性能。如果将 accept_mutex 的值设置为 on,Nginx 会对多个进程接收连接进行序列号,一个个来唤醒接收,就防止了多个进程对连接的争抢。

二、http 配置

说明:http 配置不止下面这些,后面我们还会接触很多。

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_agent" "$http_x_forwarded_for" ';
    access_log  logs/access.log  main;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;
}

1. include mime.types;

设定 mime 类型,类型在 mime.type 文件中进行定义。

2. default_type application/octet-stream;

默认文件类型。

3. log_format  main;

日志格式设置。

4. access_log  logs/access.log  main;

记录访问信息。

5. sendfile on;

开启文件传输。

6. tcp_nopush on;

开启防止网络阻塞模式。

7. keepalive_timeout  65;

长连接超时时间,单位为秒。

8. gzip on;

开启 gzip 压缩传送。

9. include /etc/nginx/conf.d/*.conf;

引入子配置文件。如果我们一个 nginx 存在多个 server,我们可以将他们拆分开来,然后通过 include 引入到 nginx.conf 中。

三、server 配置

说明:server 配置和 http 一样,不止下面这些,后面我们也会去说。

server 配置是在 http 配置下,一个 http 可以有多个 server 配置。

server {
        listen       80;
        server_name  localhost;
        charset koi8-r;
        access_log  logs/host.access.log  main;
		
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location ~ \.php$ {
            proxy_pass   http://127.0.0.1;
        }
    }

1. listen 80;

监听端口。

2. server_name  localhost;

服务名称,这里一般用的是域名,没有域名就用 ip。

3. charset koi8-r;

配置字符集。

4. access_log  logs/host.access.log  main;

配置当前服务的日志。

5. location /

匹配请求,/是根路径请求,会被该location匹配到并且处理。

location 下面还可以进行配置

location / {
    root   /usr/share/nginx/html;  # root是配置服务器的默认网关根目录位置
    index  index.html index.htm; # 配置首页文件的名称
}
location / {
    proxy_pass   http://127.0.0.1;
}

以上配置可以说只展示了 Nginx 的冰山一角,后面我们还会去接触更多的指令。这里推荐大家有问题可以参考 Nginx 官网的 documentation 文档进行学习。


这一讲就讲到这里,有问题可以联系我:QQ 2100363119。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他 他 = new 他()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值