Dawn's Blogs

分享技术 记录成长

0%

Nginx学习 (2) 配置文件

Nginx 配置文件的内容如下,包括三个部分:全局块、events 块和 http 块。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
########### 全局块 ###########
user nginx; # 用户、用户组
worker_processes auto; # worker 数量

error_log /var/log/nginx/error.log notice; # 日志、级别
pid /var/run/nginx.pid;


########### events块 ###########
events {
worker_connections 1024; # worker 的最大连接数
}


########### http块 ###########
http {
include /etc/nginx/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 /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}

server {
keepalive_requests 120;
listen 80;
server_name _;

# charset utf-8;

location / { # 请求的 url 过滤,正则匹配
# root html;
# index index.html index.htm;
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}

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

配置文件

全局块

全局块主要设置一些影响 nginx 服务器整体运行的配置,主要包括:

  • user:配置运行 Nginx 服务器的用户(组)。
  • worker_processes:允许生成的 worker 数量。为了避免上下文切换,通常设置为 cpu 总核心数 -1 或等于总核心数。
  • pid:守护进程 PID 文件路径。
  • error_log:日志存放路径,以及日志级别。
  • worker_cpu_affinity_cpumask:将 worker 绑定在某个固定的 CPU 核心上。
1
2
3
4
5
6
########### 全局块 ###########
user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;

events 块

events 块涉及的配置主要影响 Nginx 服务器与用户的网络连接

常用的设置包括:

  • accept_mutex:off 或者 on,表示是否开启用户请求至各 worker 进程时使用的负载均衡锁(网络连接序列化)。

  • multi_accept:是否允许同时接收多个网络连接,默认为 off。

  • use:选取哪种事件驱动模型来处理连接请求,默认为 epoll。可选有 select、poll、kqueue、epoll、resig、eventport。

  • worker_connections:每个 worder 可以同时支持的最大连接数。

1
2
3
4
########### events块 ###########
events {
worker_connections 1024;
}

http 块

代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。http 块也包括 http 全局块、server 块。

http 全局块

  • include:文件扩展名与文件类型映射表。
  • default_type:默认文件类型,默认为 text/plain。
  • keepalive_timeout:连接超时事件。
  • error_page:错误页。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
########### http块 ###########
http {
include /etc/nginx/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 /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

error_page 404 https://www.baidu.com; #错误页

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

server 块

每个 http 块可以包括多个 server 块,而每个 server 块也分为全局 server 块,以及可以同时包含多个 location 块

全局 server 块配置包括:

  • keepalive_requests:单连接请求上限次数。
  • listen:监听端口。
  • server_name:监听地址。

location 块包括:

  • root:根目录。
  • index:设置默认页。
  • proxy_pass:请求转向的上游服务器(用 upstream 定义)。
  • deny:拒绝的 IP。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
upstream mysvr {   
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}

server {
keepalive_requests 120;
listen 80;
server_name _;

# charset utf-8;

location / { # 请求的 url 过滤,正则匹配
# root html;
# index index.html index.htm;
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}