nginx配置参数

1 简介
nginx是很常用的轻量级web服务或代理服务,它有支撑百万并发的强大实力。nginx也应用到了金蝶云苍穹系统中,并提供了如下功能:
(1)苍穹入口,反向代理,为苍穹携带header传租户编码,苍穹服务数据中心等信息都依赖租户编码
(2)提供应用仓库功能,实现动态微服务,即各微服务可动态加载应用包
(3)存放苍穹静态资源,实现动静分离,便于CDN加速
(4)提供补丁仓库功能,便于mc去更新苍穹补丁
(5)其他方案的实现,如内外网访问隔离、多地址访问方案等
2 基础运维
2.1 nginx服务启停
方法一、系统服务方式
nginx启动命令:systemctl start nginx
nginx停止命令:systemctl stop nginx
nginx平滑加载:systemctl reload nginx
nginx应用状态:systemctl status nginx
方法二、手动命令方式(以安装编译到/usr/local/nginx为例)
nginx检测语法:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
nginx启动命令:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx停止命令:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s stop
nginx平滑加载:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload
2.2 nginx配置文件与日志文件
nginx配置文件(以安装编译到/usr/local/nginx为例):默认在 /usr/local/nginx/conf/nginx.conf,然后nginx.conf文件中会使用include来扩展加载其他的文件便于分类维护。
nginx日志文件路径需要查看配置文件中定义的access_log和error_log值来判断。
3 配置介绍
nginx配置大致分为如下区块:
(1)全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等
(2)events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等
(3)stream块:用来实现四层协议的转发、代理或者负载均衡等
(4)upstream块:数据转发功能,为nginx提供了跨越单机的横向处理能力,也提供负载均衡能力。
http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等
(5)server块:配置虚拟主机的相关参数,一个http中可以有多个server
(6)location块:配置请求的路由,以及各种页面的处理情况
如下图:

4 参数介绍
参数名称 | 参数位置 | 推荐值 | 参数说明 |
| user | 全局块 | root | 用于指定worker进程运行时所基于的用户和用户组,默认都为nobody。Linux系统中普通用户不能使用1024以下的端口,语法: user [username] [groupname];不指定组名,默认与用户名相同 |
worker_processes | 全局块 | auto | worker进程的个数,通常应该略少于CPU物理核心数,也可以使用auto自动获取 |
worker_connections | events块 | 61024 | 单个worker进程打开的最大并发连接数 |
| server_tokens | http块 | off | 打开或关闭错误页面中的nginx版本号 |
| gzip | http块 | on | 设置nginx采用gzip压缩的形式发送数据,减少发送数据量,但会增加请求处理时间及CPU处理时间 |
| keepalive_timeout | http块 | 65 | 每个tcp连接的超时时长,默认为75s |
| large_client_header_buffers | http块、server块 | 4 512k | 该参数主要是在用户的请求头部信息超过了client_header_buffer_size所能存储的大小时使用,该参数定义了每个header所能传输的数据的大小,以及最多能够传输多少个header。如果单个header大小超限,则会返回414(Request URI too large)状态码,如果是header个数超限,则会返回400(Bad Request)状态码。 |
| include | http块 | conf.d/*.conf | 加载主配置文件以外的配置文件,方便配置文件的维护 |
| log_format | http块 | 参考参数说明中的建议值 | 定义日志输出格式,建议值: log_format ierp '$remote_addr - $remote_user [$time_local] "$request" "cqappid:$http_cqappid" "traceId:$http_traceId" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" "$upstream_response_time"'; |
access_log | location块、server块、http块 | 实际情况调整 | 访问日志主要用于记录客户端的请求,存储路径空间大一点 |
| error_log | location块、server块、http块 | 实际情况调整 | 记录了访问出错的信息,存储路径空间大一点 |
listen | server块 | 实际情况调整 | 配置监听的端口号,如果不配置,则默认为80端口。也可以设置使用ssl协议 |
server_name | server块 | localhost | 定义主机名,主机名可以有多个,名称还可以使用正则表达式(~)或通配符。 请求中的Host头部的主机名与server块中的主机名进行匹配 |
proxy_pass | location块 | 实际情况调整 | 定义转发到后端负载的一个或一组服务器 |
proxy_set_header | location块 | 实际情况调整 | 用来设定被代理服务器接收到的header信息 |
proxy_connect_timeout | location块 | 1800 | nginx与后端服务器的连接超时时间。http请求无法立即被处理,被放在nginx的待处理池中等待被处理。此参数为等待的最长时间,默认60秒 |
proxy_send_timeout | location块 | 1800 | nginx发送数据至后端服务器的超时时间,默认60s,如果连续的60s内没有发送 |
nginx配置参数
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



