nginx配置文件

本文最后更新于:2022年6月1日 下午

nginx配置文件的目录

1
2
3
4
#vim /usr/local/nginx/conf/nginx.conf
或主文件+子文件结构
#vim /opt/openresty/nginx/conf/nginx.conf
#vim /opt/openresty/nginx/conf.d/*.conf

nginx配置文件结构

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
#全局块
#user nobody;
worker_processes 1;

#event块
events {
worker_connections 1024;
}

#http块
http {
#http全局块
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#server块
server {
#server全局块
listen 8000;
server_name localhost;
#location块
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#这边可以有多个server块
server {
...
}
}
1、全局块:
配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:
配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:
可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:
配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:
配置请求的路由,以及各种页面的处理情况。

某配置文件示例

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
########### 每个指令必须有分号结束。#################
#user administrator administrators; #配置用户或者组,默认为nobody nobody。
#worker_processes 2; #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024; #最大连接数,默认为512
}
http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain
#access_log off; #取消服务日志
log_format myFormat '$remote_addr$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
access_log log/access.log myFormat; #combined为日志格式的默认值
sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。

upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}
error_page 404 https://www.baidu.com; #错误页
server {
keepalive_requests 120; #单连接请求上限次数。
listen 4545; #监听端口
server_name 127.0.0.1; #监听地址
location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
#root path; #根目录
#index vv.txt; #设置默认页
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}
}

rtmp推流nginx配置文件写法

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
worker_processes  1;   #允许生成的进程数,默认为1
events {
worker_connections 1024; #最大连接数,默认为512
}
rtmp {
server {
listen 1935; #Nginx监听的RTMP推流/拉流端口
application live {
live on; #当推流时,RTMP路径中的APP(RTMP中一个概念)匹配myapp时,开启直播
record off; #不记录视频
gop_cache off;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /live {
flv_live on; #当HTTP请求以/live结尾,匹配这儿,这个选项表示开启了flv直播播放功能
chunked_transfer_encoding on; #HTTP协议开启Transfer-Encoding: chunked;方式回复
add_header 'Access-Control-Allow-Origin' '*'; #添加额外的HTTP头
add_header 'Access-Control-Allow-Credentials' 'true'; #添加额外的HTTP头
}

location / {
root html;
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

nginx搭建多个web站点,主配置+子配置的文件写法(这种办法方便且整洁,一个站点项目一个配置文件)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
主配置文件:
# vim /opt/openresty/nginx/conf/nginx.conf

worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include /opt/openresty/nginx/conf.d/*.conf; #子文件链接
}
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
56
57
58
子项目snake配置文件:
# vim /opt/openresty/nginx/conf.d/snake.conf

server {
listen 443 ssl;
server_name 2ich4n.top; #域名匹配
root html/snake/; #项目路径
index snake.html snake.htm; #项目页面主页
#ssl证书配置
ssl_certificate /opt/openresty/nginx/conf/cert/2ich4n.pem; #ssl证书路径
ssl_certificate_key /opt/openresty/nginx/conf/cert/2ich4n.key; #ssl证书路径
#协议优化(可选,优化https协议,增加安全性)
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html/snake/;
index snake.html snake.htm;
}
}
#自动跳转到HTTPS
server {
listen 80;
server_name 2ich4n.top;
rewrite ^(.*)$ https://$host$1 permanent; #转到https
}




子项目star配置文件:
# vim /opt/openresty/nginx/conf.d/star.conf

server {
listen 443 ssl;
server_name simple2ich4n.top; #域名匹配
root html/star/; #项目路径
index star.html star.htm; #项目页面主页
#ssl证书配置
ssl_certificate /opt/openresty/nginx/conf/cert/simple2ich4n.crt; #ssl证书路径
ssl_certificate_key /opt/openresty/nginx/conf/cert/simple2ich4n.key; #ssl证书路径
#协议优化(可选,优化https协议,增加安全性)
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html/star/;
index star.html star.htm;
}
}
#自动跳转到HTTPS
server {
listen 80;
server_name simple2ich4n.top;
rewrite ^(.*)$ https://$host$1 permanent;
}

此示例多项目整合的路径为nginx下的html里,例:/opt/openresty/nginx/html

W

检查nginx配置文件是否可用

1
# nginx -t

重启nginx即可

1
# nginx -s reload

nginx配置文件
https://simple2ich4n.top/27743/
作者
2ich4n
发布于
2021年8月18日
更新于
2022年6月1日
许可协议