一、隐藏Nginx版本号
1. 修改配置文件
本方法是通用方法,但只能隐藏版本号,无法因此服务名称。
-
修改Nginx服务的配置文件nginx.conf,在http模块的全局部分写入以下内容。
server_tokens off; -
保存文件后,检查配置文件是否存在问题,并重启Nginx服务。
nginx -t systemctl restart nginx
2. 修改源码包
本方法仅适用于编译安装,但是能够隐藏服务名称和版本号。
-
修改Nginx源码包中的src/core/nginx.h文件,可自定义版本和服务名称。
#define NGINX_VERSION "1.22.0" #define NGINX_VER "nginx/" NGINX_VERSION -
保存文件后,重新编译安装。
cd /usr/local/nginx ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx make && make install
二、切割日志数据
-
编写切割日志的脚本文件。
#! /bin/bash d=$(date +%Y-%m-%d) dir="/usr/local/nginx/logs" logs_access="/usr/local/nginx/logs/access.log" logs_error="/usr/local/nginx/logs/error.log" pid_file="/usr/local/nginx/run/nginx.pid" if [ ! -d "$dir" ] then mkdir -p $dir fi mv ${logs_access} ${dir}/access_${d}.log mv ${logs_error} ${dir}/error_${d}.log kill -USR1 $(cat ${pid_file}) find $dir -mtime +30 -exec rm -rf {} \; -
设置脚本的可执行权限。
chmod +x /opt/nginxlog.sh -
设置定时任务,定时执行脚本。
crontab -e 0 0 * * * /opt/nginxlog.sh
三、页面压缩
-
编辑Nginx服务的配置文件nginx.conf,在http模块中做出以下修改。
gzip on; gzip_min_length 1k; gzip_buffers 4 64k; gzip_comp_level 6; gzip_vary on; gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json; -
保存文件后,检查配置文件是否语法有误,并重启Nginx服务。
nginx -t systemctl restart nginx
四、图片浏览器缓存
-
编辑Nginx服务的配置文件nginx.conf,新增一个location模块。
location ~* \.(gif|jpg|jpeg|png)$ { root /var/www/html; expires 1d; } -
保存文件后,检查配置文件是否语法有误,并重启Nginx服务。
nginx -t systemctl restart nginx
五、会话连接保持
连接保持和会话保持是网络通信中的两种机制,连接保持是指保持两个主机间的连接,从而减少连接频繁地建立或断开;会话保持是指保持用户和服务端的交互,是对交互的控制。
从HTTP 1.1开始支持keepalive模式,该模式属于连接保持机制。当数据传送完毕之后,连接不会立刻断开,而是一段时间时间之内保持连接,无需再进行三次握手。如果需要传输数据,可以继续使用这个连接。用户可以自定义时长,但是连接保持的时间不宜太长,通常设置在60-180秒,keepalive的连接保持时间太长,会占用过多的系统资源,影响性能。
-
编辑Nginx服务的配置文件nginx.conf,在http模块中做出以下修改。
keepalive_timeout 65; client_header_timeout 80; client_body_timeout 80;- client_header _timeout 80:客户端向服务端发送一个完整请求头的超时时间。当80秒内未返回请求,nginx就返回状态码408,408表示请求超时。
- client_body_timeout 80:客户端向服务端发送一个完整请求体的超时时间。
-
保存文件后,检查配置文件是否语法有误,并重启Nginx服务。
nginx -t systemctl restart nginx
六、Nginx的并发处理
-
查看主机的CPU的核数(线程数)。
cat /proc/cpuinfo | grep processor | wc -l -
编辑Nginx服务的配置文件nginx.conf,在全局模块中做出以下修改。
worker_processes 2; worker_cpu_affinity 0001 0010;- worker_processes 2:设置任务线程数,数值通常是主机的具体内核数,或者是内核数的2倍。最多不超过8,一旦数目超过8,性能反而会降低。
- worker_cpu_affinity 0001 0010:绑定CPU核心,使用二进制表示。0001表示CPU核心0,0010表示CPU核心1。
-
保存文件后,检查配置文件是否语法有误,并重启Nginx服务。
nginx -t systmctl restart nginx
七、TIMEWAIT回收机制
TIMEWAIT是四次挥手时,主机的一个连接状态,这时候的TCP连接还没有断开,等待一定时间,确保数据报文传输完毕。该机制可以保证未传输完成的数据报文不会影响新的TCP连接,以及避免TCP连接复用的问题。
-
修改系统的内核文件/etc/sysctl.conf,在文件中写入以下内容。
# 表示开启SYN cookies(同步位缓存),当syn等待连接队列溢出,启用cookies来进行处理。 net.ipv4.tcp_syncookies=1 # 让time_wait状态的连接可以重用,time_wait状态的连接占用了所有端口,也不会拒绝新的请求 net.ipv4.tcp_tw_reuse=1 # 让time_wait尽快回收 60-120s,ubuntu内核不支持这个配置,centos7支持,8版本开始也不支持。 # net.ipv4.tcp_tw_recycle=1 # 保持在fin-wait-2状态的时间。表示套接字文件由本端要求关闭,这个参数决定了关闭的间隔 net.ipv4.tcp_fin_timeout=65 -
保存文件后,启用内核配置。
sysctl -p
八、配置防盗链
-
编辑Nginx服务的配置文件nginx.conf,在location中做出以下修改。
location ~* \.(gif|jpg|jpeg|png)$ { root /var/www/html; expires 1d; valid_referers none blocked *.xy104.com xy104.com; if ($invalid_referer) { # rewrite ^/ http://www.xy104.com/error.png; return 403; } } -
保存文件后,检查配置文件语法并重启Nginx服务。
nginx -t systemctl restart nginx

792

被折叠的 条评论
为什么被折叠?



