企业部分实战-----nginx重定向+盗链与防盗链
一、nginx重定向的实现
1.简单重定向
我们平常访问淘宝的时候都会使用taobao.com,而不是http://www.taobao.com,这就是重定向,当以taobao.com访问的时候定向到http://www.taobao.com。接下来,实现简单的重定向。
(1)修改配置文件,设置虚拟主机,当以www.westos.org访问虚拟主机时,进行重定向,并重启。
nginx -t
nginx -s reload
(2)真机测试,写入解析
2.80重定向443
(1) cert.pem文件的制作
在真机中测试:
备注:302临时重定向不缓存,301永久重定向缓存
3.重定向的升级版
备注:能正确实现访问和实现资源重定向的前提是输入的域名必须是正确的
即 server_name www.westos.org 和bbs.westos.org;
4.nginx服务器状态可视化
vim /usr/local/lnmp/nginx/conf/nginx.conf
nginx -s reload
测试:
查看状态不产生日志
vim /usr/local/lnmp/nginx/conf/nginx.conf
nginx -s reload
访问控制
测试:
黑名单用户访问
白名单用户访问
访问目录
创建测试目录并放入文件
mkdir /usr/local/nginx/html/download
测试
网页加密
vim /usr/local/nginx/conf/nginx.conf
生成cert.pem文件并重启服务
cd /etc/pki/tls/certs/
make cert.pem
mv cert.pem /usr/local/nginx/conf/
nginx -s reload
测试
访问http://www.westos.org会自动跳转https://www.westos.org
nginx服务器的平滑升级
例如正在使用版本是1.19.1
# 需要更新到1.19.4版本
# 解压1.19.4版本的源码包,并编译,注意不要make install ,否则会覆盖之前旧版本的nginx。参数要和之前安装1.19.1版本的相同
# 复制正在使用版本的nginx命令文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/oldnginx
# 复制新版本源码包的nginx命令文件,将旧版本覆盖
cp -f ./nginx-1.19.4/objs/nginx /usr/local/nginx/sbin/nginx
# 查看nginx主进程的进程号,并用kill民令将新版本主进程开启
ps ax | grep nginx
[root@server9 objs]# ps ax | grep nginx
7482 ? Ss 0:00 nginx: master process nginx
7483 ? S 0:00 nginx: worker process
7584 pts/0 R+ 0:00 grep --color=auto nginx
kill -USR2 7482
[root@server9 objs]# kill -USR2 7482
[root@server9 objs]# ps ax | grep nginx
7482 ? Ss 0:00 nginx: master process nginx
7483 ? S 0:00 nginx: worker process
7597 ? S 0:00 nginx: master process nginx
7598 ? S 0:00 nginx: worker process
7601 pts/0 R+ 0:00 grep --color=auto nginx
# 回收就版本的nginx:worker进程
kill -WINCH 7482
[root@server9 objs]# kill -WINCH 7482
[root@server9 objs]# ps ax | grep nginx
7482 ? Ss 0:00 nginx: master process nginx
7597 ? S 0:00 nginx: master process nginx
7598 ? S 0:00 nginx: worker process
7712 pts/0 R+ 0:00 grep --color=auto nginx
# 查看
[root@server9 sbin]# curl localhost -I
HTTP/1.1 200 OK
Server: nginx/1.19.4 # !!!!!!!!!!!!!!
Date: Thu, 05 Nov 2020 03:14:13 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sun, 01 Nov 2020 04:12:14 GMT
Connection: keep-alive
ETag: "5f9e359e-264"
Accept-Ranges: bytes
# 版本回退
# 唤醒旧版本worker进程
# 回收新版版worker进程
[root@server5 sbin]# ps ax | grep nginx
9819 ? Ss 0:00 nginx: master process nginx
9895 ? S 0:00 nginx: master process nginx
9981 ? S 0:00 nginx: worker process
10179 pts/0 R+ 0:00 grep --color=auto nginx
[root@server9 sbin]# kill -HUP 9819
[root@server9 sbin]# kill -WINCH 9895
# 查看
[root@server9 sbin]# curl localhost -I
HTTP/1.1 200 OK
Server: nginx/
Date: Thu, 05 Nov 2020 03:18:35 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sun, 01 Nov 2020 04:12:14 GMT
Connection: keep-alive
ETag: "5f9e359e-264"
Accept-Ranges: bytes
# 退出新版本主进程
[root@server9 sbin]# kill -QUIT 9895
[root@server9 sbin]# ps ax | grep nginx
9819 ? Ss 0:00 nginx: master process nginx
10191 ? S 0:00 nginx: worker process
10293 pts/0 R+ 0:00 grep --color=auto nginx
nginx的日志分离
在企业生产环境中由于服务器的访问量十分巨大,产生的日志文件也非常多,可能会需要对日志截取分析
# vim /opt/nginxlog.sh
cd /usr/local/nginx/logs && mv access.log access_$(date +%F -d -1day).log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
chmod +x /opt/nginxlog.sh
执行一次测试效果
sh /opt/nginxlog.sh
根据实际需求,将脚本添加到定时任务中
# vim /etc/crontab
0 0 * * * sh /opt/nginxlog.sh # 每天执行一次
防止域名恶意解析到服务器IP
简单来说就是访问的重定向,修改nginx配置文件
创建www目录编写默认发布页
mkdir /bbs
echo bbs.westos.com > /bbs/index.html
nginx -s reload
测试:
二、nginx盗链与防盗链
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
盗链是指用户在访问一台服务器资源时,这台服务器从另一台服务器上盗取资源链接让用户访问
盗链的实现
在被访问的服务器上编写盗链脚本
src地址为要盗取哪台服务器的资源
vim /usr/local/nginx/html/test.html
<html>
<body>
<img src="http://www.westos.org/vim.jpg">
</body>
</html>
在被盗取主机里边添加脚本里面的资源
使用客户机访问主机脚本
盗链对被盗主机显然是非常不公平的,所以就有了防盗链,原理为在被盗时将资源地址转向另外一个地址
将资源转向172.25.12.12主机的一个图片,保证这个主机有这个图片资源
防盗链测试,资源转向成功
三、日志图形化管理
goaccess 日志可视化
tar -xzvf goaccess-1.4.tar.gz
cd goaccess-1.4/
./configure --enable-utf8 --enable-geoip=legacy
make && make install
使用方法:
cd /usr/local/nginx/logs/
goaccess access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html
测试效果: