nginx的配置优化及经常使用的超时配置说明

1.开启gzip

可以从服务器端解决静态资源包传输过大问题,但是压缩会占用服务器端cpu计算资源

配置说明
在这里插入图片描述
配置事例
在这里插入图片描述

配置nginx多核

在这里插入图片描述
相关安全配置
在这里插入图片描述
二. Nginx的优化模板

user root;
worker_processes 4;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;


events {
worker_connections 10240;
}


http {

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 9;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
include mime.types;
default_type application/octet-stream;

sendfile on;
keepalive_timeout 65;
client_header_timeout 150;
client_body_timeout 1800;
send_timeout 150;
proxy_read_timeout 1800;   
proxy_hide_header X-Powered-By;
proxy_hide_header Server;

server {

listen 8080;
server_name localhost;
server_tokens off;
client_max_body_size 1024m;

# 工作流前端
location /wffront/ {
proxy_pass http://127.0.0.1:8081/wffront/;
}

location / {
root /hr;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}

#location ~* \.(?:jpg|jpeg|gif|png|ico|woff2)$ {
# expires 1M;
# add_header Cache-Control "public";
#}
location /prod-api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8081/;
}
}
}

参数详解

sendfile on;
设置为on表示启动高效传输文件的模式。sendfile可以让Nginx在传输文件时直接在磁盘和tcp socket之间传输数据。如果这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer,用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer,再用write函数把数据从用户空间的buffer写入到内核的buffer,最后到tcp socket。开启这个参数后可以让数据不用经过用户buffer。

keepalive_timeout
keepalive_timeout参数是一个请求完成之后还要保持连接多久,不是请求时间多久,目的是保持长连接,减少创建连接过程给系统带来的性能损耗,类似于线程池,数据库连接池。

client_header_timeout
客户端向服务端发送一个完整的 request header 的超时时间。如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)

client_body_timeout
指定客户端与服务端建立连接后发送 request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)

send_timeout
服务端向客户端传输数据的超时时间

proxy_read_timeout
nginx 接收 upstream server 数据超时, 默认 60s, 如果连续的 60s 内没有收到 1 个字节, 连接关闭;根据应用不同可配置 uwsgi_send_timeout/fascgi_send_timeout/proxy_send_timeout

proxy_hide_header X-Powered-By;
规则描述:
x-powered-By表示网站是用什么技术开发的,它会泄漏开发语言、版本号和框架等信息,有安全隐患,需要隐藏掉。
根据:
审计描述:
检查nginx.conf文件,是否存在以下配置:
proxy_hide_header X-Powered-By;
修改建议:
在nginx.conf文件中使用指令proxy_hide_header隐藏它

proxy_hide_header X-Powered-By;
proxy_hide_header Server;
可以隐藏主机头信息,业务使用的nginx反向代理在显示响应头时将后端机器的PHP版本显示了出来,虽说在用户体验和安全上并无大的影响,但是将PHP版本信息暴漏出来总是不妥的。。
在这里插入图片描述

nginx经常使用的超时配置说明
client_header_timeout

语法 client_header_timeout time
默认值 60s
上下文 http server
说明 指定等待client发送一个请求头的超时时间(例如:GET / HTTP/1.1).仅当在一次read中,没有收到请求头,才会算成超时。若是在超时时间内,client没发送任何东西,nginx返回HTTP状态码408(“Request timed out”)

client_body_timeout

语法 client_body_timeout time
默认值 60s
上下文 http server location
说明 该指令设置请求体(request body)的读超时时间。仅当在一次readstep中,没有获得请求体,就会设为超时。超时后,nginx返回HTTP状态码408(“Request timed out”)

keepalive_timeout

语法 keepalive_timeout timeout [ header_timeout ]
默认值 75s
上下文 http server location
说明 第一个参数指定了与client的keep-alive链接超时时间。服务器将会在这个时间后关闭链接。可选的第二个参数指定了在响应头Keep-Alive: timeout=time中的time值。这个头可以让一些浏览器主动关闭链接,这样服务器就没必要要去关闭链接了。没有这个参数,nginx不会发送Keep-Alive响应头(尽管并非由这个头来决定链接是否“keep-alive”)
两个参数的值可并不相同

注意不一样浏览器怎么处理“keep-alive”头
MSIE和Opera忽略掉"Keep-Alive: timeout=" header.
MSIE保持链接大约60-65秒,而后发送TCP RST
Opera永久保持长链接
Mozilla keeps the connection alive for N plus about 1-10 seconds.
Konqueror保持长链接N秒

lingering_timeout

语法 lingering_timeout time
默认值 5s
上下文 http server location
说明 lingering_close生效后,在关闭链接前,会检测是否有用户发送的数据到达服务器,若是超过lingering_timeout时间后尚未数据可读,就直接关闭链接;不然,必须在读取完链接缓冲区上的数据并丢弃掉后才会关闭链接。

resolver_timeout

语法 resolver_timeout time
默认值 30s
上下文 http server location
说明 该指令设置DNS解析超时时间

proxy_connect_timeout

语法 proxy_connect_timeout time
默认值 60s
上下文 http server location
说明 该指令设置与upstream server的链接超时时间,有必要记住,这个超时不能超过75秒。
这个不是等待后端返回页面的时间,那是由proxy_read_timeout声明的。若是你的upstream服务器起来了,可是hanging住了(例如,没有足够的线程处理请求,因此把你的请求放到请求池里稍后处理),那么这个声明是没有用的,因为与upstream服务器的链接已经创建了。

proxy_read_timeout

语法 proxy_read_timeout time
默认值 60s
上下文 http server location
说明 该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来得到请求的响应。这个时间不是得到整个response的时间,而是两次reading操做的时间。

proxy_send_timeout

语法 proxy_send_timeout time
默认值 60s
上下文 http server location
说明 这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操做期间。若是超时后,upstream没有收到新的数据,nginx会关闭链接

proxy_upstream_fail_timeout(fail_timeout)

语法 server address [fail_timeout=30s]默认值 10s上下文 upstream说明 Upstream模块下 server指令的参数,设置了某一个upstream后端失败了指定次数(max_fails)后,该后端不可操做的时间,默认为10秒

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值