Nginx网页优化及安全

1.修改Nginx用户与组

Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制
Nginx默认使用nobody用户账号与组账号
修改的方法:
编译安装时指定用户与组
修改配置文件指定用户与组

1.1修改操作

编译安装时

./configure --user=nginx --group=nginx

配置文件中

user nginx nginx;

1.2查看

ps aux | grep nginx		#查看nginx的进程
主进程由root创建,子进程由nginx用户创建

在这里插入图片描述

2.Nginx的日志分割

随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件
太大的日志文件对监控是一个大灾难,需要定期进行日志文件的分割
Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动分割
通过Linux的计划任务周期性的进行日志分割

2.1日志分割脚本思路

  1. 设置时间变量
  2. 设置保存日志路径
  3. 将目前的日志文件进行重命名
  4. 重建新日志文件
  5. 删除时间过长的日志文件
  6. 设置cron任务,定期执行脚本自动进行日志分割

2.2日志分割操作

日志分割脚本

vi fenge.sh
#!/bin/bash
# fenge
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/aa.com-access.log-$d
kill -s HUP $(cat $pid_path)
find $logs_path -mtime +30 | xargs rm -rf

计划任务脚本

crontab -e
0 1 * * * /usr/bin/sh /root/fenge.sh

3.隐藏版本信息

隐藏Nginx版本号,避免安全漏洞泄露
Nginx隐藏版本号的方法
修改配置文件(隐藏版本号)
修改源码法(修改版本号)

3.1隐藏版本号

vi /usr/local/nginx/conf/nginx.conf
server_tokens off;
##若在http模块中加,为全局设置
##在server模块内加,为当前主机设置

3.1.1抓包测试

隐藏前
在这里插入图片描述
隐藏后
在这里插入图片描述

3.2修改版本号

先将主配置文件中版本信息开启

vi /usr/local/nginx/conf/nginx.conf
server_tokens on;

再修改源码并重新编译安装

vi /root/nginx-1.12.0/src/core/nginx.h
#define nginx_version	1012000
#define NGINX_VERSION	"1.1.1"		##修改版本号
#define NGINX_VER		"IIS/" NGINX_VERSION	##修改搭建使用软件服务

cd /root/nginx-1.12.0/
make && make install

3.2.1抓包测试

修改后效果
在这里插入图片描述

4.Nginx连接超时

为避免同一客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间
超时参数:
Keepalive_timeout:设置连接保持超时时间
Client_header_timeout:指定等待客户端发送请求头的超时时间
Client_body_timeout:设置请求体读超时时间

4.1设置连接超时

request如果是post才有请求体,get没有请求体
在主配置文件http模块内修改

keepalive_timeout 65 180;
#前面参数是服务器主动关闭的超时时间,后面参数是客户机浏览器主动关闭的时间
client_header_timeout 80;
等待客户端发送请求头的超时时间,超时会发送408错误
client_body_timeout 80;
设置客户端发送请求体超时时间

4.1.1抓包测试

显示连接超时打开,客户机连接超时最大时间180s
在这里插入图片描述

5.网页压缩

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

5.1网页压缩操作

修改配置文件参数

vi /usr/local/nginx/conf/nginx.conf
    gzip  on;
    ##开启gzip压缩功能
    gzip_min_length 1k;
    ##压缩阈值
    gzip_buffers 4 16k;
    ##buffer,大小为416k缓冲区大小
    gzip_http_version 1.1;
    ##压缩版本
    gzip_comp_level 6;
    ##压缩比率,最小为1,处理速度快,传输速度慢,9最大压缩比,处理速度慢,传输速度快
    gzip_types text/plain application/x-javascript text/css image/jpg i
mage/jpeg image/png image/gif application/xml text/javascript applicati
on/x-httpd-php application/javascript application/json;
##被压缩网页中的数据格式
    gzip_disable "MSIE [1-6]\.";
    ##配置禁用gzip条件,支持正则,例表示IE1-6不压缩
    gzip_vary on;
    ##选择支持very header,可以让前端的缓存服务器缓存经过gzip压缩的页面

6.网页缓存

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

6.1配置网页缓存

设置方法:
修改配置文件,加入特定内容的过期参数,在http段为全局,在server段为本主机,在location段为该网页
修改配置文件

vi /usr/local/nginx/conf/nginx.conf
location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {
	root	html;
	expires 1d	##例,过期时间设为1}

6.1.1抓包测试

网页缓存开启,过期时间一天
在这里插入图片描述

7.更改Nginx运行进程数

在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
更改进程数的配置方法:
修改配置文件,修改进程配置参数

7.1修改配置文件

vi /usr/local/nginx/conf/nginx.conf
worker_processes 4;		#例,使用4CPU内核
worker_cpu_affinity 0001 0010 0100 1000;	#例,将进程分给4个内核

参数:worker_processes
一般设为CPU的个数或者核数
在高并发情况下可设为CPU个数或核数的2倍
增加进程数,可减少系统的开销,提升服务速度
参数:worker_cpu_affinity
默认情况下,Nginx的多个进程可能跑在一个CPU上,可以分配不同的进程给不同的CPU处理,充分利用硬件多核多CPU

7.1.1查看运行进程数的变化情况

ps aux | grep nginx ##此时为4个进程

7.2修改系统文件数上限值

若想让配置进程数生效,需增加系统文件数上限值

ulimit -n #查看当前系统文件数上限值
##修改系统文件数上限值3种方法
①:ulimit -n 65535 >> /etc/rc.local
②:ulimit -n 65535 >> /etc/profile
③:在/etc/security/limits.conf最后增加
* soft nofile 65535  ##操作系统级别对每个用户创建的进程数的软限制
* hard nofile 65535  ##操作系统级别对每个用户创建的进程数的硬限制
* soft nproc 65535  ##每个进程可以打开的文件数的软限制
* hard nproc 65535  ##每个进程可以打开的文件数的硬限制

7.3开启高并发支持

vi /usr/local/nginx/conf/nginx.conf
events {
    use epoll;    ##开启支持多并发连接数
    worker_connections  65535;	##每个进程最大连接数
}

8.fpm模块参数优化

Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整
根据服务器的内存与服务负载,调整FPM模块参数
启动fpm进程方式,通过pm参数指定
static:将产生固定数量的fpm进程
dynamic:将以动态的方式产生fpm进程

8.1配置pm参数

vi /usr/local/php/etc/php-fpm.d/www.conf
pm = dynamic
pm.max_children=20	#static模式下空闲进程数上限,大于下面的值
pm.start_servers = 5  #动态方式下默认开启的进程数,在最小和最大之间
pm.min_spare_servers = 2  #动态方式下最少空闲进程数
pm.max_spare_servers = 8  #动态方式下最大空闲进程数

8.2验证

pkill php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
ps aux | grep php-fpm

在这里插入图片描述

9.防盗链

在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失
Nginx防盗链功能非常强大。默认情况下,只需要进行简单的配置,即可实现防盗链处理

9.1配置防盗链

配置说明:
~* \.(jpg|gif|swf)$:匹配以.jpg或.gif或.swf结尾的不区分大小写的文件
valid_referers:设置信任的网站,即能引用相应图片的网站
网址或域名:referer中包含相关字符串的网址
if语句:如果链接的来源域名不在vaild_referers所列出的列表中,$invalid_referer为1

配置防盗链

vi /usr/local/nginx/conf/nginx.conf
location ~* \.(gif|jpg|jepg)$ {
                valid_referers  192.168.20.10;
                if ($invalid_referer) {
                rewrite ^/ http://192.168.20.10/bb.png;
                        }
}

9.1.1实验效果

本地主机
在这里插入图片描述
盗链主机
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值