像呵护你女朋友一样优化你的nginx系统,给她配置防盗链保护她的安全

2023-12-12 22:45

本文主要是介绍像呵护你女朋友一样优化你的nginx系统,给她配置防盗链保护她的安全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 nginx系统如何隐藏版本号

可以使用 Fiddler 工具抓取数据包,查看 Nginx版本, 也可以在 CentOS 中使用命令 curl -I http://192.168.111.8显示响应报文首部信息

1.1隐藏版本号1(修改配置文件)

修改配置文件:vim /usr/local/nginx/conf/nginx.conf

重启服务并查看版本号

1.2隐藏版本号2(修改源码文件)

1.进入rpm包目录修改版本号和服务类型

vim /opt/nginx-1.22.0/src/core/nginx.h

2.重新配置编译环境,编译并安装

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

3.修改配置文件,显示版本号

vim /usr/local/nginx/conf/nginx.conf

4.重启服务并登录查看版本号是否更改

2 修改nginx用户与组

修改配置文件vim /usr/local/nginx/conf/nginx.conf

重启服务查看主进程由root创建,子进程由nginx创建

3 缓存时间

当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度 一般针对静态网页设置,对动态网页不设置缓存时间

修改配置文件设定缓存时间

vim /usr/local/nginx/conf/nginx.conf

在Linux系统中,打开火狐浏览器,右击点查看元素
选择 网络 ---> 选择 HTML、WS、其他
访问 http://192.168.111.1.666.jpg ,双击200响应消息查看响应头中包含 Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。

4 日志切割

编写脚本

vim /opt/fenge.sh

添加脚本执行权限,crontab -e添加周期性计划每小时执行该脚本

5 连接超时

HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。 KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。

修改nginx配置文件设置长连接时间
vim /usr/local/nginx/conf/nginx.conf

5 更改进程数

在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
cat /proc/cpuinfo | grep -c "physical id" #查看cpu核数
ps aux | grep nginx #查看nginx主进程中包含几个子进程

修改nginx的配置文件

重启服务查看进程数

6 设置并发数

vim /usr/local/nginx/conf/nginx.conf

vim /etc/security/limits.conf

7 配置网页压缩

Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能
允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装
可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
vim /usr/local/nginx/conf/nginx.conf

cd /usr/local/nginx/html 为网页内容目录
vim index.html 配置nginx网页内容文件
nginx -t检查配置文件是否正确,重启服务

原文件大小为14.1KB

在Linux系统中,打开火狐浏览器,右击点查看元素
选择 网络 ---> 选择 HTML、WS、其他
访问 http://192.168.80.10 ,双击200响应消息查看请求头中包含 Content-Encoding: gzip

8 配置防盗链

修改nginx配置文件配置防盗链

vim /usr/local/nginx/conf/nginx.conf

准备web源主机192.168.111.8网页配置

cd /usr/local/nginx/html

盗链主机配置

cd /usr/local/nginx/html

测试是否能盗取图片连接

清除防盗链配置再测试,可以显示盗链图片

9 nginx常用内核优化

/etc/sysctl.conf                              内核参数的配置文件
net.ipv4.tcp_sysconkies = 1                   开启SYN cookies 当出现SYN等待队列溢出时启用,启用cookies来处理,可防范少量SYN攻击
net.ipv4.tcp_tw_rease = 1                     开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接
net.ipv4.tcp_tw_recycle = 1                   开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_fin_timeout = 30                 修改系统默认的 TIMEOUT 时间(MSL值),原本是60s
net.ipv4.ip_local_port_range = 1024 65535     外向连接的端口范围
net.ipv4.tcp_max_tw_buckets = 5000            系统同时保持TIME-WAIT的最大数量
net.ipv4.tcp_max_syn_backlog = 8192           系统能接受的tcp半连接的最大队列数
net.core.somaxconn = 10000                    每一个端口最大的 Listen 监听队列的长度
net.ipv4.tcp_keepalive_time = 1200            发送keepalive探测包消息的频率
​
net.ipv4.tcp_syncookies = 1 

10 内核限制文件

/etc/security/limits.conf 内核限制文件
*     soft     noproc            65535      打开的进程数
*     hard     noproc            65535
*     soft     nofile            65535      打开的文件数
*     hard     nofile            65535
*     soft     memlock         unlimited     不做内存锁定
*     hard     memlock         unlimited

11 常用的nginx模块

rewrite                     重写功能
access                      来源控制
ssl                         安全加密
ngx_http_gzip_module        网络传输压缩模块
ngxhttp_proxy_module        模块实现代理
ngx_http_upstream_module    定义后端服务器列表
ngx_cache_purge             实现缓存清除功能
​

12 源码编译安装nginx时,如何启用更多的模块以及禁用不需要的模块?简单描述下你都使用过哪些模块?

执行,/configure脚本时,通过添加 --with-模块名 的方式启用更多模块,通过添加 --without-模块名 的方式禁用不需要的

这篇关于像呵护你女朋友一样优化你的nginx系统,给她配置防盗链保护她的安全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/486221

相关文章

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom