隐藏版本号
- 安装依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
- 编译安装Nginx
cd /opt
tar zxvf nginx-1.15.9.tar.gz -C /opt/
cd /opt/nginx-1.15.9/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make && make install //编译并安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ //创建软链接、方便系统识别nginx的命令
- 创建运行用户、组
useradd -M -s /sbin/nologin nginx //创建程序用户,以便准确的控制访问
- 增加Nginx系统服务
vim /etc/init.d/nginx
以下内容:
#!/bin/bash
# chkconfig: - 99 20 // chkcofig - “-” 表示不启用开机启动管理 (同时 若不加“#”, chkconfig add nginx 会加载不到配置)
# description: Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx" //命令程序文件位置(nginx)
PID="/usr/local/nginx/logs/nginx.pid" //pid文件
case "$1" in
start)
$COM
;;
stop)
kill -s QUIT $(cat $PID)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PID)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx #添加为系统服务
systemctl stop nginx
systemctl start nginx
可以使用 Fiddler 工具抓取数据包,查看 Nginx版本
也可以在 CentOS 中使用命令 curl -I 显示响应报文首部信息
curl -I http://192.168.41.135 //查看版本号
方法一:修改配置文件方式
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
server_tokens off; //添加,关闭版本号
......
}
systemctl restart nginx //查看版本号
curl -I http://192.168.41.135 //查看版本号
方法二:修改源码
- 将方法一中关闭的版本号重新打开
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
server_tokens on; #打开
vim /opt/nginx-1.15.9/src/core/nginx.h
13 #define NGINX_VERSION "1.0.0" //将原始的1.15.9修改为1.0.0
14 #define NGINX_VER "IIS" NGINX_VERSION //将原始的Nginx修改为IIS
cd /opt/nginx-1.15.9 //重新编译安装
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make && make install
systemctl restart nginx //重启服务
curl -I http://192.168.41.135 //查看版本号是否隐藏
修改用户和组
- 若没有安装前创建用户,则在此服务中默认使用的是nobody
vim /usr/local/nginx/conf/nginx.conf
user nginx nginx; ##将前面的#注释掉,然后修改用户与组为nginx
worker_processes 1;
systemctl restart nginx
ps aux | grep nginx #查看用户与组是否修改成功
设置缓存时间
vim /usr/local/nginx/conf/nginx.conf
42 location / {
43 root html;
44 index index.html index.htm;
45 }
46 location ~ \.(gif|jpg|jepg|bmp|ico)$ { //增加图片识别
47 root html;
48 expires 1d; //设置缓存时间为1天
49 }
cd /usr/local/nginx/html/ //需要添加张图片在nginx首页中
14 <h1>Welcome to nginx!</h1>
15 <img src="61797fa2594d1df94e5943a693d1c716_u=13256008,344756314&fm=26&fmt=auto&gp=0.jpg"/> //15行插入图片
- 注:现在的ip是192.168.41.145
使用浏览器直接访问 . ipg图片
http://192.168.41.145/61797fa2594d1df94e5943a693d1c716_u=13256008,344756314&fm=26&fmt=auto&gp=0.jpg
日志切割
- 创建脚本
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
2. 给与权限执行分割
chmod +x fenge.sh
./fenge.sh
#查看日志分割
[root@localhost nginx]# ls /var/log/nginx/
#修改时间,再次执行脚本
[root@localhost nginx]# date -s 20210623
[root@localhost nginx]# sh -x /opt/fenge.sh
[root@localhost nginx]# ls /var/log/nginx/
#周期任务定时执行
crontab -e
0 1 * * * /opt/fenge.sh
小知识
在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime
ctime(status time):
当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time,
只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。
atime(accesstime):
当使用这个文件的时候就会更新这个时间。
mtime(modification time):
当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。
连接超时
HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。
vim /usr/local/nginx/conf/nginx.conf
30 keepalive_timeout 100; //指定每个tcp连接最多可以保持65秒
31 client_header_timeout 80; //等待客户端发送请求头的超时时间 超时会发送408错误
32 client_body_timeout 80; //设置客户端发送请求体超时时间
- 检查语法
更改进程数
cat /proc/cpuinfo | grep -c "physical" //cpu核数
ps aux | grep nginx //一个主进程中包含一个子进程
vim /usr/local/nginx/conf/nginx.conf
worker_processes 2; //修改为核数相同或者2倍;2核cpu,开启2个进程
worker_cpu_affinity 01 10; //设置每个进程由不同cpu处理,进程数配为2时为0001、0010、0100、1000
PS:
01表示启用第一个CPU内核,10表示启用第二个CPU内核
worker_cpu_affinity 01 10;表示开启两个进程,第一个进程对应着第一个CPU内核,第二个进程对应着第二个CPU内核。
worker_processes 4; //2核cpu,开启4个进程
worker_cpu_affinity 01 10 01 10;
PS:开启了四个进程,它们分别对应着开启2个CPU内核
worker_processes 4; //4个cpu,开启4个进程
worker_cpu_affinity 0001 0010 0100 1000;
ps:0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推
配置网页压缩
vim /usr/local/nginx/conf/nginx.conf
37 #gzip on;
38 gzip on; //取消注释,开启gzip压缩功能
39 gzip_min_length 1k; //最小压缩文件大小
40 gzip_buffers 4 16k; //压缩缓冲区,大小为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]\."; //配置禁用gzip条件,支持正则,表示ie6以下不启用gzip
45 gzip_vary on; //支持前端缓存服务器存储压缩页面
vim index.html
14 <h1>Welcome to nginx!</h1>
15 <img src="61797fa2594d1df94e5943a693d1c716_u=13256008,344756314&fm=26&fmt=auto&gp=0.jpg"/> //网页中插入图片
systemctl restart nginx.service
盗链与防盗链
盗链
准备三台机器
盗链端: 192.168.41.146 #nginx服务
服务端:192.168.41.140 #nginx服务
win10 : 192.168.41.160 #指向服务端DNS /hosts
- 配置盗链
#服务端添加映射
vim /etc/hosts
192.168.41.146 www.a.com
#添加图片
cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html bbs index.html caomei.jpg index.php
#修改index.html.插入图片
<h1>Welcome to nginx!</h1>
<img src="caomei.jpg"/>
#盗链端添加映射
vim /etc/hosts
192.168.41.140 daolian
192.168.41.146 www.a.com
[root@localhost html]# vim index.html
<h1>Welcome to nginx!</h1>
<img src="http://www.a.com/caomei.jpg"/>
- Win10添加映射并访问网页
先提权
- 确认后再配置文件中添加域名IP地址映射关系,保存
防盗链
服务端操作:
[root@localhost html]# cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html bbs index.html caomei.jpg index.php
[root@localhost html]# rz -E
rz waiting to receive.
[root@localhost html]# ls
50x.html bbs fd.png index.php caomei.jpg index.html
#增加不一样的图片格式,为了防盗链不同的体现
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
56 location ~*\.(jpg|gif|swf)$ {
57 valid_referers none blocked *.a.com a.com;
58 if ( $invalid_referer ) {
59 rewrite ^/ http://www.a.com/fd.png;
60 }
61 }
systemctl restart nginx.service
- 使用win10访问域名+盗链端地址:
fpm参数优化
vim /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid
vim /usr/local/php/etc/php-fpm.d/www.conf
–96行–
pm = dynamic #fpm进程启动方式,动态的
–107行–
pm.max_children=20 #fpm进程启动的最大进程数
–112行–
pm.start_servers = 5 #动态方式下启动时默认开启的进程数,在最小和最大之间
–117行–
pm.min_spare_servers = 2 #动态方式下最小空闲进程数
–122行–
pm.max_spare_servers = 8 #动态方式下最大空闲进程数
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` #重启php-fpm
netstat -anpt | grep 9000