Nginx配置

标题

Nginx配置

全局块

所有在nginx.conf中,但是不在{ }中的配置

1
2
3
4
5
6
7
8
9
# 指定运行nginx的用户和用户组
user myUser myGroup;
# 工作线程数量,一般设置成CPU核心数
# 1个master进程,4个worker进程
worker_process 4;
# 指定pid文件所在路径
pid /usr/local/nginx/nginx.pid;
# 错误日志的存放路径和日志级别
error_log logs/error.log debug;

events块

主要配置Nginx服务器和用户的网络连接

1
2
3
4
5
6
7
8
9
10
events{
# 设置网络连接序列化,默认on,防止惊群现象
accept_mutex on;
# 一个进程是否可以接受多个网络连接
multi_accept on;
# 事件驱动模型:select、poll、epoll、kqueue
use epoll;
# 最大连接数
worker_connections 1024;
}

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
http{
# 1、引入文件扩展名和其文件类型映射表
# 通过mine.types的映射,设置response的content-type
include mine.types;

# 2、设置默认文件类型,默认是text/plain
default_type application/octet-stream;

# 3.1、开启服务日志
access_log off;
# 3.2、自定义日志格式
log_format myLogFormat '$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_refer $http_user_agent $heep_x_forwarded_for';
# 3.3、设置日志格式
access_log log/access.log myLogFormat;

# 4.1、是否开启高效文件传输模式
# 是否使用sendfile零拷贝技术来减少用户空间到内核空间的上下文切换
sendfile on;
# 4.2、每个进程每次最大传输值,默认0,不限制大小
sendfile_max_chunk 100k;

# 5、长连接超时时间
keeplive_timeout 100;

# 6、一次连接请求上限
keepalive_requests 100;

# 7、响应客户端的超时时间
send_timeout 60;

# 8、客户端请求头的区缓冲大小
client_header_buffer_size 32k;

# 9、客户端请求头的最大缓冲区大小和数量
large_client_header_buffers 8 32k;

# 10、允许客户端请求的最大字节数
client_max_body_size 10m;

# 11、客户端请求体的缓冲区大小
client_body_buffer_size 128k;
}

http反向代理基本配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
http{
# 代理连接后端服务器超时时间
proxy_connet_timeout 90;
# 代理发送后端服务器超时时间
proxy_send_timeout 90;
# 代理接收后端服务器响应超市
proxy_read_timeout 90;
# 从nginx读取并保存用户头信息的缓冲区大小
proxy_buffer_size 4k;
# 代理缓存区数量和大小
proxy_buffers 4 32k;
# 高负荷下缓冲大小
proxy_busy_buffers_size 64k;
# 设定缓存文件夹大小
proxy_temp_file_write_size 64k;
# 后台可以获取到完整的IP+端口号
proxy_set_header Host $host;
# 后台可以获取到用户访问的真实ip地址
proxy_set_header X-Forwarder-For $remote_addr
}

http反向代理服务器和负载均衡

1
2
3
4
5
6
7
8
9
10
11
upstream product_server {
# 权重默认为1,权重越高被选中的概率就越大
server 192.168.1.11:8080 weight=5;
# 标识这个server暂时不参加负载
server 192.168.1.12:8080 down;
# 其他所有非backup机器down或者忙的时候,才会分配这台服务器
server 192.168.1.13:8008 backup;
# max_fails,允许请求失败的最大次数,默认为1
# max_fails失败后,暂定的时间
server 192.168.1.14:8080 max_fails=2 fail_timeout=60s;
}

http_gzip配置

启动gzip压缩功能,可以在传输网站的静态资源的时候进行压缩
压缩后的资源是原来资源大小的30%甚至更小
虽然会消耗一定的CPU资源,但是可以节约大量的带宽
服务端压缩,浏览器接收后解压后再解析
图片和大文件不建议压缩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
http {
# 开启gzip压缩
gzip on;
# 设置压缩的最小字节数
gzip_min_length 1k;
# 设置缓存用于存储gzip的压缩结果数据流
# 4 16k表示按照原始数据大小以16k为单位的4倍进行内存申请
gzip_buffers 4 16k;
# http协议版本
gzip_http_version 1.0;
# zip压缩比
# 1的时候处理最快,9压缩比最大处理速度最慢
gzip_com_level 6;
# 设置需要压缩哪些响应类型的资源
gzip_types text/plain text/css application/json;
# 代理后端服务器时,返回的结果是否需要压缩
gzip_proxies any;
# 是否缓存结果gzip压缩的页面
gzip_vray on;
}

server相关配置

server基础配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
http{
server {
# 1、监听端口
listen 8080;
# 2、监听服务器地址
server_name localhost;
# 3、每个连接请求上限
keepalive_requests 120;
# 4、字符集
charset utf-8;
# 5、服务日志所在目录以及日志格式
access_log logs/host.log myLogFormat;
# 6、错误页
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html
}
}

ssl配置

如果请求方式是https的话,需要服务器提供证书,就需要设置ssl

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
http{
server {
# ssl访问端口是443
listen 443 ssl;
# 填写绑定证书的域名
server_name xxx.com;
# 开启ssl
ssl on;
# ssl证书路径
ssl_certificate /opt/ssl/nginx.crt;
# ssl证书的密钥
ssl_certificate_key /opt/ssl/nginx.key;
# ssl会话超时时间
ssl_session_timeout 1d;
# ssl缓存
ssl_session_cache shares:SSL:50m;
# ssl会话票据
ssl_session_tickets off;
# ssl协议版本
ssl_protocols TLSv1.2;
# ssl密码套件
ssl_ciphers 'HIGH:!ANULL:!MD5';
# 开启ssl服务密码套件
ssl_prefer_server_ciphers on;
}
}

location配置

基于Nginx服务器接收到的请求字符串,对除虚拟机主机名称之外的字符串进行匹配,对特定的请求进行处理,完成地址定向、数据缓存和应答控制等功能

http {
    server {
        # 1、路由匹配规则:只有符合了匹配规则的uri才会进入该location块
        # location [ = | ~ | ~* | ^~ ] uri { ... }
        # = :用于标准uri前,要求请求字符串和uri严格匹配
        # ^~:用于标准uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,不再使用正则uri和请求字符串做匹配
        # ~:用于正则uri前,区分大小写
        # ~*:用于正则uri前,不区分大小写
        location 匹配规则{
            # 2、服务器默认网站根目录位置
            root /var/www/html
                # 3、默认访问的文件名
                index index.html index.htm index.jsp;
            # 4.1、拒绝的ip
            deny 192.168.56.21;
            # 4.2、允许的ip
            allow 192.168.56.10;
            # 5.1、跨域、请求头配置
            add_header Access-Control-Allow-Origin * always;
            add_header Access-Control-Allow-Credentials 'true' always;
            add_header Access-Control-Allow-Headers * always;
            add_header Access-Control-Allow-Method 'PUT, GET, POST, DELETE, OPTIONS' always;
        }

        location ~/product {
            # 反向代理服务器
            proxy_pass http://product_server;
            # 是否重定向代理服务器地址
            proxy_redirect off;
            # 后台可以获取完整的ip和端口号
            proxy_set_header Host $host;
            # 后台可以获取用户访问的真实ip地址
            proxy_set_header X-Forwarder-For $remote_addr;
        }
    }
}
给作者买杯咖啡吧~~~