【Nginx】可以做哪些优化?

一、配置文件优化

1.1  性能优化

开启网页压缩              

gzip   on;
设置网页缓存时间 expires 缓存时间;
设置连接保持超时 keepalive_timeout  服务端超时时间   客户端超时时间;
设置连接保持最大请求数 keepalive_requests
设置工作进程数

worker_processes 

与服务器CPU数量相同或auto

设置工作进程连接数 worker_connections
设置工作进程绑核 worker_cpu_affinity
IO多路复用模型 use epoll;
优化网络传输 sendfile on;
tcp_nopush on;
tcp_nodelay on;

1.2  安全优化

隐藏版本号

server_tokens off;
限制同一ip的连接数量 limit_conn_zone    limit_conn
限制同一ip的请求速率 limit_req_zone    limit_req
限制下载速度 limit_rate
限制最大上传文件大小 client_max_body_size
访问控制 deny/allow IP;
设置防盗链 先用valid_referers设置信任的跳转链接,再用if ($invalid_referer) 对不信任的跳转链接进行rewrite地址重写或直接reture 403

二、系统内核优化

2.1  内核资源限制优化

1、临时配置

ulimit -n  65535   #设置用户级别进程打开的文件数  
ulimit -u  65535   #设置用户级别能够打开的进程/线程总数

2、永久配置

vim  /etc/security/limits.conf

*  soft  nofile  65535             #设置用户级别进程打开的文件数

*  hard  nofile  65535

*  soft  nproc  65535              #设置用户级别能够打开的进程/线程总数

*  hard  nproc  65535

2.2  内核资源限制优化

vim /etc/sysctl.conf
#解决TIME_WAIT数量过多问题
net.ipv4.tcp_tw_reuse=1            #开启TIME_WAIT连接重用于新的TCP连接,默认值为0
net.ipv4.tcp_max_tw_buckets=5000   #减少系统可以保持的TIME_WAIT连接的最大数量,如果超过该值就不需要等待2MSL直接关闭TIME_WAIT连接,默认值为16384
net.ipv4.tcp_fin_timeout=30        #减少处于TIME_WAIT状态的超时时间(MSL时间),尽快释放系统的连接资源,默认值为60

#进一步优化,提升服务器的并发能力,还能预防一些攻击
net.ipv4.ip_local_port_range=1024 65535      #增加用于向外连接的本地端口范围,默认为32768 60999
net.ipv4.tcp_keepalive_time=1200             #减少TCP连接保活时间,设置TCP连接在没用数据传输时多久发送一次保活探测包来确认客户端是否断网,默认值为7200

net.ipv4.tcp_max_syn_backlog=65535           #增加TCP半连接队列容量,设置TCP三次握手建立阶段接收SYN请求队列的最大长度,默认为128
net.core.netdev_max_backlog=65535            #增加网络接口队列长度,可以避免在高负债情况下丢包,默认值为1000
net.core.somaxconn=65535                     #增加系统中每个TCP端口监听队列的最大长度,默认值为128。需要配置nginx的配置 listen 80 backlog=65535

net.ipv4.tcp_syncookies=1                    #开启SYN Cookies功能,可以用于预防SYN Flood攻击

net.ipv4.ip_forward=1                        #开启IP数据包路由转发功能。仅在作为网关服务器,路由转发数据包时开启

你可能感兴趣的:(nginx,linux,运维,服务器)