nginx配置参数

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

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_formathttp块参考参数说明中的建议值

定义日志输出格式,建议值:

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_loglocation块、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内没有发送1个字节,连接关闭

proxy_read_timeout

location块

1800

Nginx接收到后端服务器数据的超时时间,默认60s,如果连续的60s内没有接收1个字节,连接关闭

client_max_body_size

location块、server块、http块

2048m

限制请求体的大小,若超过所设定的大小,返回413错误

proxy_max_temp_file_size

location块2048m

每个请求能用磁盘上临时文件最大大小,这些当上游响应太大不能装配到缓冲区时被创建

proxy_http_version

location块1.1

设置用于代理的HTTP协议版本。默认1.0版本。推荐1.1版本用于保持连接和NTLM认证

proxy_cookie_path

location块实际情况调整

用于改变cookie的路径

5 location匹配规则优先级

根据上图的优先级规则,我们举个例子:

假如,有如下匹配规则:

location = / {
   echo "规则A";
}
location = /login {
   echo "规则B";
}
location ^~ /static/ {
   echo "规则C";
}
location ^~ /static/files {
    echo "规则X";
}
location ~ \.(gif|jpg|png|js|css)$ {
   echo "规则D";
}
location ~* \.webp$ {
   echo "规则E";
}
location /img {
    echo "规则Y";
}
location / {
   echo "规则F";
}

那么产生的效果如下:

访问根目录 /,比如 http://localhost/ 将匹配 规则A
访问 http://localhost/login 将匹配 规则B,http://localhost/register 则匹配 规则F
访问 http://localhost/static/a.html 将匹配 规则C
访问 http://localhost/static/files/a.exe 将匹配 规则X,虽然 规则C 也能匹配到,但因为最大匹配原则,最终选中了 规则X。你可以测试下,去掉规则 X ,则当前 URL 会匹配上 规则C。
访问 http://localhost/a.webp, http://localhost/b.webp 将匹配 规则D 。
访问 http://localhost/static/c.webp 将匹配到 规则C,虽然 规则 D 也能匹配到,但前缀匹配的 规则C 优先级更高。
访问 http://localhost/a.webp 则匹配 规则 D ,而不会匹配 规则 E ,因为 规则 D 区分大小写,精确度高于 规则 E。
访问 http://localhost/a.PNG 则匹配 规则 E ,而不会匹配 规则 D ,因为 规则 E 不区分大小写。
访问 http://localhost/img/a.webp 会匹配上 规则D,虽然 规则Y 也可以匹配上,但是因为正则匹配优先,而忽略了 规则Y。
访问 http://localhost/img/a.tiff 会匹配上 规则Y。
访问 http://localhost/category/id/1111 则最终匹配到规则 F ,因为以上规则都不匹配,这个时候应该是 Nginx 转发请求给后端应用服务器,比如 FastCGI(php),tomcat(jsp),Nginx 作为反向代理服务器存在。

6 常见状态码说明

状态码
说明

200

请求已成功,请求所希望的响应头或数据体将随此响应返回

301、302

请求的资源重定向到新位置。301是永久重定向,302是临时重定向

400

请求头过大或无效的请求(请求参数有误)

403

服务器已经理解请求,但是拒绝执行它。与401响应不同的是,401是身份验证不通过被拒绝

404

请求失败,请求所希望得到的资源未被在服务器上发现

413

服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器能够处理的范围。

500

服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现

502

从上游服务器接收到无效的响应,或无法接收到有效的响应。

504

未能及时从上游服务器或者辅助服务器(例如DNS)收到响应

状态码查看:浏览器通过F12的Network页签 或者 nginx日志文件:access_log或error_log

nginx配置参数

1 简介nginx是很常用的轻量级web服务或代理服务,它有支撑百万并发的强大实力。nginx也应用到了金蝶云苍穹系统中,并提供了如下功能:(1...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息