在生产环境中,需要隐藏Nginx的版本号,避免安全漏洞泄露。
因为每个版本都有他自带的缺陷,避免缺陷暴露被攻击。
1、本地:curl -I http://192.168.65.129
2、浏览器:可以直接在浏览器上(F12),开发者工具—>network—>重新加载页面---->选择请求—>选择headlers
---->查看版本
①修改配置文件
②修改源码
1、进入主配置文件(vim /usr/local/nginx/conf/nginx.conf)
http {
include mime.types;
default_type application/octet-stream;
server_tokens off; //插入,关闭版本号
注:/src:放源码,里面有个/core,里面是核心模块。
1、修改文件
vim /opt/nginx-1.12.0/src/core/nginx.h
#define nginx_version 1015009
#define NGINX_VERSION "1.15.9" ----------->修改
#define NGINX_VER "nginx/" NGINX_VERSION ------->修改
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make && make install
3、打开版本号(server_tokens on)
4、重启,查看
注:nginx里面可能有work子进程关不干净,需要手动沙掉。
注:若没有安装前创建用户,则在此服务中默认使用的是nobody
vim /usr/local/nginx/conf/nginx.conf
user nginx nginx ; //将前面的#注释掉,nobody改为nginx
chown给予属主属组
systemctl restart nginx.service
ps aux | grep nginx //查看用户与组是否修改成功
1、修改主配置文件:
vim /usr/local/nginx/conf/nginx.conf <<
在http{
server{
location{
下添加 <<
location ~ \.(gif|jpg|jepg|bmp|ico)$ {
//匹配以这些格式结尾的
#添加图片识别
root html;
expires 1d;
#设置缓存时间为1天
}
---->wq
2、上传图片到目录:
cd /usr/local/nginx/html //图片上传至这个目录
vim index.html
Welcome to nginx!</h1>
"1.jpg"/> //添加图片信息
systemctl restart nginx //重启服务
3、测试:
192.168.65.129 192.168.65.129/1.jpg
or curl -I测试
随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要关注日志文件。
分割的意义:避免过大的日志文件无法监控。(固定点---->时间戳)
方法:通过Nginx信号控制功能的脚本实现
计划任务,周期分割。
脚本编辑思路:
设置时间变量、设置保存日志路径、将目前的日志文件重命名、重建新日志文件、删除时间过长的日志文件、
设置cron,定期执行自动分割。
vim /opt/fenge.sh <<
#!/bin/bash
#Filename:fenge.sh
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${
logs_path}/test.com-access.log-$d
kill -HUP $(cat $pid_path)
find $logs_path -mtime +30 | xargs rm -rf
---->wq
chmod +x /opt/fenge.sh //给予权限
注:date -d "-1 day" "+%Y%m%d":唯一性区分
-d----修改
-1 day----前一天
+ ----连接符
%Y%m%d----年月日
kill -QUIT 结束 -HUP 平滑重载 类似reload -USR1日志分割 -USR2 平滑升级
crontab -l
0 1 * * * /opt/fenge.sh
systemctl restart nginx
netstat -natp | grep nginx
bash -x fenge.sh
ls /var/log/nginx/
date -s 20210627
./fenge.sh
ls /var/log/nginx/
date
注:Linux重要的时间参数:ctime atime mtime
windows文件的三种时间属性:创建时间、修改时间、访问时间
Linux下文件也有三种:访问时间(atime)最后被使用,命令脚本、修改时间(mtime)vi编辑、状态修改时间(ctime)inode和block内容改变时间
权限、属组属主、链接数等。
分为三类:连接保持的超时时间;等待客户端发送请求头的超时时间;请求体读超时时间。
指定每个TCP链接最多可以保持多长时间,Nginx默认65s,有的浏览器60s。
如果为0,就是禁止keepalive链接。
vim /usr/local/nginx/conf/nginx.conf <<
32 #keepalive_timeout 0;
33 keepalive_timeout 100;
34 client_header_timeout 80; //等待客户端发送请求头超时时间,超时发送408
35 client_body_timeout 80; //请求体超时时间
----->wq
nginx -t
cat /proc/cpuinfo | grep -c "physical"
ps aux | grep nginx
vim /usr/local/nginx/conf/nginx.conf <<
2 #user nobody;
3 worker_processes 2;
4 worker_cpu_affinity 01 10;
---->wq
vim /usr/local/nginx/conf/nginx.conf <<
37 #gzip on;
38 gzip on;
39 gzip_min_length 1k;
40 gzip_buffers 4 16k;
41 #gzip_http_version 1.1;
42 gzip_comp_level 6;
43 gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php appli cation/javascript application/json;
44 gzip_disable "MSIE [1-6]\.";
45 gzip_vary on;
----->wq
cd /usr/local/nginx/html
vim index.html
systemctl restart nginx
对FPM模块进行参数优化
Nginx的PHP解析功能实现如果是交由FPM(fastcgi 进程管理器)处理的,为了提高PHP的处理速度。可以对FPM模块进行参数跳转
Ngingx是通过FPM调用的PHP
FPM优化参数:
pm #使用哪种方法启动fpm进程,可以说是static和dynamic。前者将产生固定数量的fpm进程,后者将以动态的方式产生fpm进程。
pm.max_children #static方式下开启的fpm进程数(静态/动态)
pm.start_server #动态方式下初始的fpm进程数量(动态)
pm.min_spare_servers #动态方式下最小的fpm空闲进程数(动态)
pm.max_spare_servers #动态方式下最大的fpm空闲进程数(动态)
vim php-fpm.conf <<
pid = run/php-fpm.pid
pm = dynamic
pm.max_children=20 ##static模式下空闲进程数上限,大于下面的值
pm.start_servers = 5 ##动态方式下默认开启的进程数,在最小和最大之间
pm.min_spare_servers = 2 ##动态方式下最少空闲进程数
pm.max_spare_servers = 8 ##动态方式下最大空闲进程数
盗链端:nginx服务 192.168.226.134
服务端:nginx服务 192.168.226.132
win10:指向服务端DNS/修改HOSTS 192.168.226.160
一、每台主机添加映射
1、服务端
vim /etc/hosts <<
192.168.226.132 www.dog.com
2、盗链端:
vim /etc/hosts <<
192.168.226.132 www.dog.com
192.168.226.134 daolian
3、win10:
位置:
C:\WINDOWS\System32\drivers\etc----hosts,双击记事本方式打开
注:首次修改需要添加权限
属性–安全–高级–改为完全控制
192.168.226.132 www.dog.com----ctrl+s保存
二、关闭防火墙、防护
三、配置源主机(192.168.226.132)DNS服务
四、添加图片
cd /usr/local/nginx/html/ //在这个目录下上传图片
五、修改index.html
14 Welcome to nginx!</h1>
15 "http://www.dog.com/dog.jpg"/>
六、win10访问服务端
http://www.dog.com/dog.jpg ----右键,查看源,记录下来,设置盗链。
七、设置盗链
vim index.html <<
"http://www.dog.com/dog.jpg">
--->wq
systemctl start nginx
八、win10访问盗链端
一、修改服务端主机的nginx配置文件
vim nginx.conf <<
56 location / {
57 root html;
58 index index.html index.htm;
59 }
60 location ~*\.(jpg|gif|swf)$ {
61 valid_referers none blocked *.dog.com dog.com;
62 if ( $invalid_referer ) {
63 rewrite ^/ http://www.dog.com/1.jpg;
64 }
65 }
---------->wq
nginx -t
systemctl restart nginx