目录
1.隐藏nginx版本号
1.查看版本号
2.隐藏版本信息
2.修改用户与组
3.缓存时间
4.日志分割
5.连接超时
6.更改进程数
7.网页压缩
8.配置防盗链
1.配置web源主机(192.168.156.10 www.lhf.com)
2.配置域名映射关系
3.配置盗链主机 (192.168.156.110 www.dao.com)
4.在web源主机(192.168.52.210 www.zhuo.com)中配置防盗链
1.隐藏nginx版本号
1.查看版本号
方法一:curl 命令
可以在 CentOS 中使用命令 curl -I http://192.168.156.140
显示响应报文首部信息.
curl -I http://192.168.156.140
方法二:在网页中查看
1. #切换至html目录,拖一个图片进去
cd /apps/nginx/html
2. #在网页中查看
http://192.168.156.140/
3.#打开浏览器访问IP地址,然后按F12,打开查看
2.隐藏版本信息
方法一:修改配置文件
1.#修改配置文件
vim /apps/nginx/conf/nginx.conf
2.#重启nginx
systemctl restart nginx
3.#查看版本是否被隐藏
curl -I http://192.168.156.10
http {
include mime.types;
default_type application/octet-stream;
server_tokens off; #添加,关闭版本号
......
}
方法二: 修改源码文件,重新编译安装
1. #切换至nginx安装包所在目录
cd /opt/
2. #停止nginx服务
systemctl stop nginx.service
3. #切换至安装目录
cd nginx-1.18.0/
4. #切换至内核目录
cd src/core/
5. #进入配置文件
vim nginx.h
#define NGINX_VERSION "yxp"
#define NGINX_VER "yyy/" NGINX_VERSION
6. #切换至文件目录
cd ../../
7. #编译
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
8. #安装
make && make install -j4
9. #将配置文件下的之前关闭版本信息开启
vim /apps/nginx/conf/nginx.conf
server_tokens on;
10. #重启nginx
systemctl restart nginx
11. #查看版本信息
curl -I http://192.168.156.10
2.修改用户与组
1. #修改配置文件
vim /apps/nginx/conf/nginx.conf
user lhf lhf; #取消注释,修改用户为 lhf ,组为 lhf
2. #创建非登录用户
useradd -s /sbin/nologin lhf
3. #重启服务
systemctl restart nginx
4. #查看是否修改成功
ps aux | grep nginx
3.缓存时间
当nginx将网页数据返回给客户端后,可设置缓存时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度一般针对静态网页设置,对动态网页不设置缓存时间。
1. #修改配置文件
vim /apps/nginx/conf/nginx.conf
#添加以下内容
location ~ \.(jpg|png|bmp|gif)$ {
root html;
expires 1d;
}
2. #查看是否有语法错误
nginx -t
3. #重启服务
systemctl restart nginx.service
4.#在网页中查看服务
http://192.168.156.10/2.png
Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。
4.日志分割
随着Nginx运行时间的增加,产生的日志也会逐渐增加,为了方便掌握Nginx的运行状态,需要时刻关注Nginx日志文件。太大的日志文件对监控是一个大灾难,不便于分析排查,需要定期的进行日志文件的切割。
1. #写脚本
vim /apps/nginx/nginx_log.sh
#!/bin/bash
#this is for divide nginx log
d=$(date +%F -d -1day) #显示前一天的时间
path="/var/log/nginx"
pid="/apps/nginx/logs/nginx.pid"
[ -d $path ] ||mkdir -p $path #创建日志文件目录
mv /apps/nginx/logs/access.log ${path}/www.yxp.com-$d #移动并重命名日志文件 kill -USR1 $(cat $pid) #重建新日志文件
find $path -mtime +30 -delete #删除30天之前的日志文件
2. #赋予权限
chmod +x /apps/nginx/nginx_log.sh
3. #计划任务
[root@localhost nginx]#crontab -e
30 1 * * * /apps/nginx/nginx_log.sh
扩展小知识
在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime
ctime(status time): 当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time, 只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。
atime(accesstime): 当使用这个文件的时候就会更新这个时间。
mtime(modification time): 当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。
5.连接超时
HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。
keepalive_timeout
指定KeepAlive的超时时间(timeout)。指定每个TCP连接最多可以保持多长时间,服务器将会在这个时间后关闭连接。 Nginx的默认值是65秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为0,就禁止了keepalive 连接。
第二个参数(可选的)指定了在响应头Keep-Alive:timeout=time中的time值。这个头能够让一些浏览器主动关闭连接,这样服务器就不必去关闭连接了。没有这个参数,Nginx 不会发送 Keep-Alive 响应头。
client_header_timeout
客户端向服务端发送一个完整的 request header 的超时时间。如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。
client_body_timeout
指定客户端与服务端建立连接后发送 request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)。
#修改配置文件
vim /apps/nginx/conf/nginx.conf
-----------------------------------
http {
......
keepalive_timeout 65 180;
client_header_timeout 80;
client_body_timeout 80;
......
}
------------------------------------
#重启nginx服务
systemctl restart nginx.service
#在网页中测试
192.168.156.10
6.更改进程数
在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞。
网段一瞬间,比如:淘宝;一瞬间请求过多时,cpu会 负载,这时就需要增加CPU工作个数,每个CPU可以处理多少个最大文件数调高,worker_processes*worker_connections 等于它的同一时间段最多可以有多少台机器来访问。
//配置文件优化以及内核优化
1. #统计cpu核数
cat /proc/cpuinfo |grep processor|wc -l
或
cat /proc/cpuinfo |grep -c processor
2. #查看目前有的核数
ps -aux |grep nginx
3. #修改 Nginx 的配置文件worker_processes 参数,一般设为 CPU 的个数或者核数,
在高并发的情况下可设置为 CPU 个数或者核数的 2 倍,可以查看 CPU 的核数以确定参数。
vim /apps/nginx/conf/nginx.conf
worker_processes 2;
worker_cpu_affinity 01 10; 设置每个进程由不同的cpu处理,计算机是二进制语言,01(1),10(2)
//内核优化、做亲和度、指定2个/4个线程,怎么使用CPU内核,目的是让CPU的内核压力均衡
events {
worker_connections 4096;
}
4.更该系统的处理线程的最大数
ulimit -a #查看
ulimit -n 60000 #更改为60000
5. #重启服务并查看
systemctl restart nginx.service
ps -aux |grep nginx
1.统计cpu核数
2. 查看目前有的核数
3.修改 Nginx 的配置文件
4.重启服务和验证进程
7.网页压缩
1.Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能;
2.允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装可在配置文件中加入相应的压缩功能参数对压缩性能进行优化。
1. #修改配置文件
gzip on; #取消注释,开启gzip压缩功能
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 16k; #压缩缓冲区,大小为4个16k缓冲区
gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
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; #压缩类型,表示哪些网页文档启用压缩功能
2. #重启服务
systemctl restart nginx.service
3. #网页查看
http://192.168.156.10/2.png
8.配置防盗链
1.在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用
,造成经济损失,也避免了不必要的带宽浪费。
2.Nginx 的防盗链功能也非常强大,在默认情况下,只需要进行很简单的配置,即可实现防盗链处理。
1.配置web源主机(192.168.156.10 www.lhf.com)
(1)安装nginx服务并配置被盗链图片
#导入图片2.gif
准备一张图片 改名为2.gif
#切换目录
cd /apps/nginx/html/
#上传图片
rz -E
#编辑主页文件
vim index.html
-------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
<img src="2.gif"/> #插入添加此行
-------------------------------------------------------
#检查和重启服务
nginx -t
systemctl restart nginx
#验证
火狐输入
192.168.156.10
2.配置域名映射关系
#修改主机名和IP配置文件
vim /etc/hosts
--------------------------------------------------
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.156.10 www.lhf.com #添加此行
#关闭防火墙并重启服务
systemctl stop firewalld.service
setenforce 0
systemctl restart nginx
3.配置盗链主机 (192.168.156.110 www.dao.com)
(1)安装apache服务并配置盗链主页
#安装apache服务
yum install httpd -y
#配置盗链主页
vim /var/www/html/index.html
---------------------------------------------
<html>
<body>
<h1>盗链</h1>
<img src="http://www.lhf.com/2.gif"/> #图片链接地址通过浏览器访问http://www.lhf.com 所得图片地址
</body>
</html>
(2) 设置域名映射
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.156.10 www.lhf.com
192.168.156.110 www.dao.com
(3)重启服务并测试
#关闭防火墙并重启服务
systemctl stop firewalld.service
setenforce 0
systemctl restart httpd
#在盗链主机(192.168.156.110 )的浏览器中输入盗链主机的域名
打开火狐输入
192.168.156.10 或 www.lhf.com
和
192.168.156.110 或 www.dao.com
验证是否被盗链
4.在web源主机(192.168.52.210 www.zhuo.com)中配置防盗链
cd /apps/nginx/html/ #切换目录
rz -E #上传图片
(2)配置防盗链
vim /apps/nginx/conf/nginx.conf (约49行开始插入
--------------------------------------------------------
http {
......
server {
......
location ~* \.(jpg|gif|swf)$ {
valid_referers none blocked *.lhf.com lhf.com;
if ( $invalid_referer ) {
rewrite ^/ http://www.lhf.com/3.png;
}
}
------------------------------------------------------------
~* \.(jpg|gif|swf)$ :这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的文件;
valid_referers :设置信任的网站,可以正常使用图片;
none:允许没有http_refer的请求访问资源(根据Referer的定义,它的作用是指示一个请求是从哪里链接过来的,如果直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer 字段的),如 http://www.lhf.com/2.jpg
我们使用 http://www.lhf.com 访问显示的图片,可以理解成 http://www.zhuo.com/2.jfif 这个请求是从 http://www.lhf.com 这个链接过来的。
blocked:允许不是http://开头的,不带协议的请求访问资源;
*.lhf.com:只允许来自指定域名的请求访问资源,如 http://www.zhuo.com
if语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为true,则执行后面的操作
(3)检查并重启服务
nginx -t
systemctl restart nginx
(4)验证防盗链是否有效
#在盗链主机(192.168.156.110 )的浏览器中输入盗链主机的域名
打开火狐输入
192.168.156.10 或 www.lhf.com
和
192.168.156.110 或 www.dao.com
验证是否被盗链