隐藏nginx版本号
1. 修改源码包
进入vim src/core/nginx.h 找到 版本号修改 与 nginx名字修改
重新配置 配置之前 用nginx-V 查询原来的功能模块
重新配置 将原来的模块导入 进行编译安装
进入 /usr/local/nginx/sbin 查看 nginx nginx.old
nginx -V 查看 curl 本机IP -I 查看 就是修改的内容
 
2.修改配置文件
进入nginx的配置文件 cd /usr/local/nginx/conf/nginx.conf
在 http模块添加 server_tokens off; //关闭显示版本号
重启配置文件 killall nginx 启动 nginx
查看 curl +ip -I 隐藏版本号
 
修改 nginx 用户账户和组账户
创建nginx程序用户
编译安装的时候指定用户账户和组账户
修改配置文件 中的用户账户和组账户
 
 
配置nginx网页缓存时间
在nginx配置文件中的 http段 server段 或者location段 (选择哪个段 就是级别问题了)
在location \.(gif|jpg|jpeg|png|bmp|ico)$ { //设置以括号里图片格式结尾的
expires 1d; //缓存一天
}
在location .*\.(js|css)$ { //设置以括号里结尾的文件
expires 1h; //缓存一小时
}
 
配置nginx实现连接超时
进入nginx的配置文件 vim/usr/local/nginx/conf/nginx
设置keepalive_timeout 65; //设置65连接时间 为长连接
 
更改nginx 工作进程数
进入nginx的配置文件 /usr/local/nginx/conf/nginx
修改 worker_processes (根据CPU的核数)
grep ‘core id ’ /proc/cpuinfo //过滤CPU核数
修改之后 重启nginx 查看进程 设置几个 几个work工作进程
 
实现nginx的日志切割
用脚本切割出以天为单位
脚本内容:
#!/bin/bash
# cut_nginx_log.sh
datetime=$(date -d "-1 day" "+%Y%m%d")
log_path="/usr/local/nginx/logs"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $log_path/backup ] || mkdir -p $log_ path/backup
if [ -f $pid_path ]
then
mv $log_path/access.log $log_path/backup/access.log-$datetime
kill -USR1 $(cat $pid_path)
find $log_path/backup -mtime +30 | xargs rm -rf
else
echo "Error,Nginx is not working" | tee -a /var/log/messages
fi
 
 
 

7.实现nginx网页压缩(传输的过程省带宽)
在nginx配置文件中的 的http模块 全局中
gzip on; //开启压缩
gzip min lengh 1k;//用于设置压缩的页面最小字节数
gzip buffers 4 16k;//表示申请4个单位为16k的内存作为压缩结果流?
 
默认值是申请与原始数据大小相同的内存空间来存储gzip的压缩结果
gzip http version 1.1; //识别http协议版本 默认1.1
gzip comp level 2; //gzip 压缩比 1-9等级
gzip vary on; //选项可以让前段的缓存服务器经过 gzip压缩的页面
 
8.配置nginx防盗链
盗取方式:(注意hosts文件)
盗取主机: 在index.html 中 指定盗取图片路径
例如:<img src=//http"www.source/1.jpg">指定对方图片路径
防盗方式:(注意限制图片后缀 与 限制跳转的图片后缀)
valid referers none blocked 域名 (设置信任网站)
添加一个location块
location ~* \.(wma|wmv|asf|mp3|mmf|zip|rar|gif|png|swf|flv)$ {
valid_referers none blocked *.source.top source.top;
if ($invalid_referer){
rewrite ^/ http://www.source.top/2.jpeg;(图片)
}
}
 
其中none表示空的来路
blocked表示被防火墙标记过的来路
 
9.对FPM模块进行有参数优化
修改配置文件优化
Nginx 的 PHP 解析功能实现如果是交由 FPM 处理的,为了提高 PHP 的处理速度,可对FPM 模块进行参数跳转。
pm.max_children // static静态设的值
pm.start_servers //动态方式初始的ftp进程数量
pm.min_spare_servers //动态方式的空闲状态最小的ftp进程数
pm.max_spare_servers //动态方式空闲状态的最大的fpm进程数
 
 
10. nginx 访问控制
进入/usr/local/nginx/conf
mkdir pass //存放秘钥文件的目录
htpasswd -c -b /usr/local/nginx/conf/pass/passwd.db admin 123456
在/usr/local/nginx/conf/pass/创建秘钥文件passwd.db 用户为:admin 密码:123456
cat passed.db //查看秘钥文件
chmod 400 pass/passwd.db //给秘钥文件设置400权限(当用秘钥文件 就要设置权限 400,600)
chown nginx:nginx pass/passwd.db //给秘钥设置归属
vim nginx.conf //修改配置文件
location / {
root html/www;
index index.html index.html ;
auth_basic "secret";
auth _basic_user_file pass/passwd.db; //添加秘钥文件
}
拒绝允许(黑白名单)匹配规则从上往下
location / {
root html/www;
index index.html index.html ;
deny 192.168.102.11; //拒绝IP访问
allow 192.168.102.0/24;//允许此网段访问
deny all; //拒绝其他所有
}
查询:awk ’{print s1}‘ access.log | sort | uniq -c | sort -rn | head
awk ’{print s1}‘ //打印访问日志的列
sort //进行排序
-r //反向排序
head //前十::::
 
11.自定义错误页面
error_page /404.html;
location =/404.html{
root html;
}
在html创建404.html
自定义内容
 
12.自动索引
进入nginx的配置文件
添加一个location /download {
autoindex on;
}
进入到html 创建downloamulu
进入downloamulu目录创建两个文件 两个目录
验证:浏览器访问 ip或域名 /download 出现创建的目录和文件
 
13.目录别名功能
location /abc { 当访问abc 直接跳转到 / 下的aaa目录里面的 index.html
alias /aaa; //别名为 根目录下的aaa里面index.html
index index.html;
}
在nginx配置文件中的 mkdir /aaa 创建aaa目录
在/aaa 中创建index.html文件 内容为 <h1>"bieming abc=/html"</h1>
验证:浏览器访问 ip 或 域名 /abc
 
14.通过UA 实现手机端和电脑端的分离
不同的来源访问不同的内容
location / {
#默认PC端访问内容
root /usr/local/nginx/html/web;
#如果是手机移动端访问内容
    if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" )
{
root /usr/local/nginx/html/mobile;
}
index index.html index.htm;
}
 
15.nginx 平滑升级版本
编译新版本 nginx源码包,安装路径与旧版一直 注意不要执行 make install
对新版本进行 解包 编译
重启nginx
进入 cd /usr/local/nginx/sbin/
mv nginx{,.old} //将老版的nginx 备份
/usr/src/nginx-1.20.1 // 在进入新包
cp objs/nginx /usr/local/nginx/sbin/ //将opjs 里面的nginx
再回到 /usr/local/nginx/sbin/ cd -
./nginx.old -v //查看版本号
./nginx -v //查看版本号
nginx -t //确保配置文件争正确
ps aux | grep nginx //查看进程
kill -USR2 主进程号 //发送信号
 
如下没有出现进程的解决方法
killall nginx //将原来的nginx 杀死
在/usr/local/nginx/sbin/下
mv nginx{,.new} //将新的nginx备份
mv nginx .old nginx //将旧的nginx 重命名
nginx //启动
mv nginx{,.old} //将旧的nginx备份回来
mv nginx.new nginx //将新的重命名回来
ps aux | grep nginx //过滤进程
kilall -USR2 主进程号 //发送信号
ps aux | grep nginx //过滤进程 效果如下
 
kill -WINCH 17915//向旧的进程发送逐步关闭工作进程信号(再有客户访问 进到新版本的工作进程)
ps aux | grep nginx //过滤进程 效果如下
 
kill -QUIT 17915 // 向旧的版本的主进程发送 工作结束后退出
ps aux | grep nginx //过滤进程 效果如下
nginx -v //查看版本号(新版本) 旧的版本退出使用
 
posted on 2021-12-26 17:22  余多多  阅读(74)  评论(2)    收藏  举报