nginx优化与防盗链
nginx服务优化
系统内核级别的优化:
/ete/security/limits.conf内核限制文件
* ? ? soft ? noproc ? ? ? ? 65535 ? ? ? 打开的进程数 * ? ? hard ? noproc ? ? ? ? 65535 * ? ? soft ? nofile ? ? ? ? 65535 ? ? ? 打开的文件数 * ? ? hard ? nofile ? ? ? ? 65535 ? ? ? ? * ? ? soft ? memlock ? ? ? ? unlimited ? 不做内存锁定 * ? ? hard ? memlock ? ? ? ? unlimited
你常用的Nginx模块,用来做什么
rewrite模块:实现重写功能 access模块:来源控制 ssl模块:安全加密 ngxhttp_gzipmodule:网络传输压缩模块 ngx_http_proxy_module:模块实现代理 ngx_httpupstreammodule:模块实现定义后端服务器列表 ngxcache_purge:实现缓存清除功能
用过哪些nginx模块?
http_gzip_module #网页压缩模块
http_stup_status_module #状态统计模块
http_auth_basic_module#网页用户认证模块
http_fastcgi_module#fastcgi#转发php-fpm的模块
http rewrite module#URL重气模块
http ssl module#https安全加密模块
http limit conn module#限制最人连接数模块
一、配置nginx隐藏版本号,避免安全漏洞
如何显示版本号:
crul -I(大i) ip地址 ? ? ? ? ? server:系统和版本号
1.修改配置文件方式
vim /usr/local/nginx/conf/nginx.conf ? ? ? #进入nginx主配置文件 http { ? include ? ? ? mime.types; ? default_type application/octet-stream; 添加配置项: ? server_tokens off; ? ? ? ? ? ? #隐藏版本号信息 ? ...... } ? nginx -t#检查配置文件 systemctl restart nginx#重载nginx
2.修改源代码
vim /opt/nginx-1.12.0/src/core/nginx.h ? ? ? ? #nginx源码文件 ? #define NGINX_VERSION "1.1.1" #修改版本号 #define NGINX_VER "IIS" NGINX_VERSION #修改服务器类型
退到nginx软件包目录中重新进行编译安装
cd /opt/nginx-1.12.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module make && make installvim /usr/local/nginx/conf/nginx.conf http { ? include ? ? ? mime.types; ? default_type application/octet-stream; ? server_tokens on; ? #将此配置项打开或者注释掉,显示版本号 ? ...... } ?systemctl restart nginx curl -I ip检查版本号
二、修改用户与组
1.编译安装时--user(指定用户)和--group(指定用户组)
2.修改配置文件
vim /usr/local/nginx/conf/nginx.conf ser nginx nginx; ? ? ? ? ? #取消注释,修改用户为 nginx ,组为 nginx ? systemctl restart nginx ? ps aux | grep nginx ?
三、配置nginx网页缓存时间
-
当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度。
-
一般针对静态网页设置,对动态网页不设置缓存时间
配置方法:修改Nginx的配置文件,在location段加入expires 参数
修改配置文件vim /usr/local/nginx/conf/nginx.conf
vim /usr/local/nginx/conf/nginx.conf http { ...... ? server { ? ...... ? ? ? location / { ? ? ? ? ? root html; ? ? ? ? ? index index.html index.htm; ? ? ? } ? ? ? ? location ~\.(gif|jpg|jepg|png|bmp|ico)$ { ? ? #加入新的 location,以图片作为缓存对象 ? ? ? ? ? root html; ? ? ? ? ? ? ? ? ? ? ? ? ? #存放图片位置 ? ? ? ? ? expires 1d; ? ? ? ? ? ? ? ? ? ? ? ? #指定缓存时间,1天1day ? ? ? #只要是以gif|jpg|jepg|png|bmp|ico为结尾的路径,就会呗location匹配到,从html目录中获取到网页的静态内容,并且让浏览器缓存这些资源一天 ? ? ? } ...... ? } } ? ? nginx -t#检查nginx配置文件修改是否有误 systemctl restart nginx
四、实现nginx的日志分割
日志分割:脚本+crontab
编写脚本进行日志切割的思路
vi /opt/fenge.sh #!/bin/bash # Filename: fenge.sh ? ? ? ? ? ? ? #注释信息 #设置变量 day=$(date -d "-1 day" "+%Y%m%d") #显示前一天的时间 logs_path="/var/log/nginx" ? ? ? ? #nginx日志目录 pid_path="/usr/local/nginx/logs/nginx.pid"#nginx的pid文件的路径 ? [ -d $logs_path ] || mkdir -p $logs_path #-d,判断日志文件目录是否存在,如果不存在则创建日志文件目录 mv /usr/local/nginx/logs/access.log ${logs_path}/kgc.com-access.log-$day #移动并重命名日志文件 kill -USR1 $(cat $pid_path) #重建新日志文件 find $logs_path -mtime +30 -exec rm -rf {} ; #删除30天之前修改过的日志文件 (mtime:,ctime,atime) chmod +x /opt/fenge.sh ? ------------------------------ /opt/fenge.sh ls /var/log/nginx ls /usr/local/nginx/logs/access.log ? crontab -e 0 0 * * * /opt/fenge.sh ? ? #使用分时日月周,每天的0点0分做日志分割
补充(ctime/atime/mtime)
在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是 ? ctime,atime,mtime ? ctime 修改文件属性时间 atime 访问文件的时间 mtime 修改文件内容时间
五、连接超时
-
HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
-
KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。
vim /usr/local/nginx/conf/nginx.conf ? http { ...... ? keepalive_timeout 60 60; ? ? ? ? ? #指定一个长连接最多可以保持多长时间,若将它设置为0,代表关闭长连接,第一个60是指服务器的超时时间,第二个是指客户端的超时时间 keepalive_requests 100; ? ? #指定一个长连接中最多允许的请求数 ? ? client_header_timeout 80; ? ? #用于去指定客户端向服务端发送的完整的请求头的超时时间 ? ? client_body_timeout 80; ? ? ? #指定客户端与服务端建立连接后发送的请求体的超时时间 ...... } ? systemctl restart nginx ? ? ? #重启nginx
六、更改nginx运行进程数
修改配置文件的worker_processes参数
-
一般设为cpu的个数或核数
-
在高并发的情况下课设置为cpu个数或者核数的2倍
cat /proc/cpuinfo | grep -c "physical id" #查看cpu核数 ps aux | grep nginx #查看nginx主进程中包含几个子进程
vim /usr/local/nginx/conf/nginx.conf
worker_processes 2; #修改为核数相同或者2倍 worker_cpu_affinity 01 10; #设置每个进程由不同cpu处理,进程数配为4时0001 0010 0100 1000 ? worker_rlimit_nofile 63335; ? ? ? #配置最大并发量
systemctl restart nginx
七、配置网页压缩
vim /usr/local/nginx/conf/nginx.conf http { ...... gzip on; #配置前取消注释,开启gzip压缩功能
#添加配置选项: ? ? gzip_min_length 1k; ? ? #最小压缩文件大小 ? gzip_buffers 4 64k; ? ? #压缩缓冲区,大小为4个64k缓冲区 ? gzip_http_version 1.1; ? ? #压缩版本(默认1.1,前端如果是squid2.5请使用1.0) ? gzip_comp_level 6; ? ? ? ? #压缩比率 ? gzip_vary on; ? ? #支持前端缓存服务器存储压缩页面 ? ? gzip disable"MSIE[1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
cd /usr/local/nginx/html ? 先将game.jpg文件传到/usr/local/nginx/html目录下 vim index.html ? ...... <img src="game.jpg"/> #网页中插入图片 </body> </html>
systemctl restart nginx
八、配置防盗链
防盗链:rewrite
vim /usr/local/nginx/conf/nginx.conf http { ...... server { ...... location ~* \.(jpg|gif|swf)$ { valid_referers none blocked *.kgc.com kgc.com;#可信任的站点路径 if ( $invalid_referer ) { rewrite ^/ http://www.kgc.com/error.png; #return 403; ? ? ? ? ? } ? ? ? } ...... } }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!