1、隐藏版本号:
bug多。更新版本速度比较快,所以一旦版本号暴露出去,有可能给对方提供攻击的漏洞。在http大模块中修改,不再server中,也不是location。
server_tokens off;


2.修改源码文件,重新编译安装:
源码包里面,修改配置文件
修改完之后要重新配置,编译和安装
隐藏版本号打开

vim nginx.h



nginx没有自带的日志分割功能,
通过脚本实现日志分割。




创建定时任务

nginx:
http_gzip_static_module 可以对文件内容和图片进行压缩的功能,节约宽带,提升用户的访问速度


gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpgimage/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;
可以在日后访问时,不需要经常的向后台请求数据,加快访问速度
一般是针对静态页面,动态不设置缓存时间。
![]()

keepalive_timeout 60 -120 ;


在高并发的场景下,需要nginx启动更多的进程来保证快速响应。cpu
根据cpu的核心数,调整nginx的工作进程数。
work_procersses 4;
worker_connections 15000;
60000个
别忘了修改limits.conf
8个以上性能降低:反复切换CPU,影响效率

time_wait是tcp连接状态中的一种,不是报错!出现在四次挥手之后。
在time_wait状态下, tpc处于连接等待状态,等待有一个持续时间 http1.1会话保持。
1、确保可靠的关闭连接
2、避免连接复用。他在连接正常关闭之后,一段时间时间之后,自动消失。而且占用的资源很小,对服务器性能的影响有限。
vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
#表示开SYN cookies
当出现SYN等待队列溢出时,启用cookies处理syn队列,默认是0。1开启。net.ipv4.tcp_tw_reuse = 1
#time_wait状态可以重用,一个连接就要占用一个端口,time_wait把所有的端口全部占满了,新的连接请求也不会拒绝。
net.ipv4.tcp_tw_recycle =1
#让time_wait尽快回收。
net.ipv4.tcp_fin_timeout = 60
所有time_wait 最大的生命周期60秒。
$remote_addr客户端的ip地址
$remote_port显示客户端的端口号
$uri:显示请求的uri
$host:显示请求的主机名
$request_method:显示请求的方法。

proxy_set_header X-Forwarded-for $remote_addr
代理服务器设置这个变量,客户端的真实ip要发送给后端,否则代理服务器地址会被拉入黑名单。proxy_set_header X-Real-IP $remote_addr
客户端的真实ip,发送给后端,现在所有的网站都会要求客户端请求时,加上真实ip.

valid_referers none blocked *.kgc.com kgc.com;
if( $valid_referer ) {
rewrite A/ http://www.kgc.com/error.png;
valid_referers:设置信任的网站
kgc.com www.kgc.com
*.kgc.com
none:允许没有http_refer的请求访问资源,请求url里面可以refer
www.kgc.com/ls.jpg
blocked:请求网站时,前面可以不带协议
www.baidu.com
www.jd.com
http://www.baidu.com
if ($valid_referer ){
rewrite ^ / http://www.kgc.com/error.png;
}
如果连接资源不是来自上面valid_referers定义的信任列表,$valid_referer变为true,执行重定向
rewrite^/http://www.kgc.com/error.png;