Nginx优化

nginx可以做什么

1 可针对静态资源高速高并发访问及缓存。
2 可使用反向代理加速,并且可进行数据缓存。
3 具有简单负载均衡、节点健康检查和容错功能。
4 支持远程FastCGI服务的缓存加速。
5 支持FastCGI、Uwsgi、SCGI、Memcached Servers的加速和缓存。
6 支持SSL、TLS、SNI。
7 具有模块化的架构:过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI及图像缩放等功能。在SSI过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理。

作为WEB服务的话支持

1 支持基于名字、端口及IP的多虚拟主机站点。
2 支持Keep-alive和pipelined连接。
3 可进行简单、方便、灵活的配置和管理。
4 持修改Nginx配置,并且在代码上线时,可平滑重启,不中断业务访问。
5 可自定义访问日志格式,临时缓冲写日志操作,快速日志轮询及通过rsyslog处理日志。
6 可利用信号控制Nginx进程。
7 支持3xx-5xx HTTP状态码重定向。404文件找不到 301重定向 302 永久重定向 403 没有权限 500 服务器错误 502 网关错误
8 支持rewrite模块,支持URI重写及正则表达式匹配。
9 支持基于客户端IP地址和HTTP基本认证的访问控制。
10 支持PUT、DELETE、MKCOL、COPY及MOVE等较特殊的HTTP请求方法。
11 支持FLV流和MP4流技术产品应用。
12 支持HTTP响应速率限制。
13 支持同一IP地址的并发连接或请求数限制。
14 支持邮件服务代理。

总的来说就是三种应用场景

(1)作为Web服务软件
(2)反向代理或负载均衡服务
(3)前端业务数据缓存服务

这些应用场景下无外乎都需要暴露在外受人攻击,所以需要一些优化来避免和提升安全性。

隐藏版本号

第一种是修改 Nginx的主配置文件
第二种是修改Nginx源码文件,指定不显示版本号

[root@localhost ~]# curl -I localhost  ##可以查看版本号等详细信息
HTTP/1.1 200 OK
Server: nginx/1.15.9

第一种修改配置文件不显示版本号
进入配置文件

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf     
http {
    include       mime.types;
    default_type  application/octet-stream;
     server_tokens off;   ##插入这段字,隐匿服务器版本(on为开启,off为关闭)
[root@localhost~]# systemctl restart nginx    ###重启Nginx服务
[root@localhost ~]# curl -I 20.0.0.1  ##再次查看
HTTP/1.1 200 OK
Server: nginx

第二种修改Nginx源码
Nginx源码文件nginx-1.15.9/src/core/nginx.h中包含了版本信息,可以随意设置,
然后重新编译安装,隐藏版本信息

[root@localhost core]# vi /opt/nginx-1.15.9/src/core/nginx.h

#define NGINX_VERSION      "6.6.6"               ##直接修改版本号
#define NGINX_VER          "DDC" NGINX_VERSION   ##直接修改服务器信息
然后进行编译安装
[root@localhost nginx-1.15.9]#
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
[root@localhost nginx-1.15.9]# make && make install
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
##我们需要展示修改过的服务器版本信息,因此需要开启展示功能  
http {
    include       mime.types;
    default_type  application/octet-stream;
        server_tokens on;
再去查看版本号
[root@localhost nginx-1.15.9]# curl -I 20.0.0.1
HTTP/1.1 200 OK
Server: DDC6.6.6

修改用户与组

Nginx运行时需要有专门的用户和组,用以对网站的访问控制
编译时指定用户与组

[root@localhost opt]# cd nginx-1.15.9/
[root@localhost nginx-1.15.9]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \   ##指定用户
--group=nginx \    ##指定组账号
--with-http_stub_status_module

修改Nginx配置文件指定用户与组

[root@localhost conf]# cd /usr/local/nginx/conf/
[root@localhost conf]# vi nginx.conf
user nginx nginx;    ##原本是nobody,修改用户为nginx,组为nginx

配置网页缓存时间

主配置文件http{}种新建一个location区域配置缓存时间

[root@localhost conf]# vi /usr/local/nginx/conf/nginx.conf
      location ~\.(gif|jpg|jepg|png|bmp|ico)$ {  ##指定图片格式
        root html;
        expires 2d;   ##缓存2天
        }

设置超时时间

避免长时间占用造成浪费。

[root@localhost conf]# vi /usr/local/nginx/conf/nginx.conf
http {
    #keepalive_timeout  0;
    keepalive_timeout  65 300;默认65设置为300s
    client_header_timeout 80;
    client_body_timeout 80;

然后进行抓包测试看看多久掉线验证一下。

进程优化

nginx 的工作进程
主进程和工作进程

[root@localhost nginx-1.15.9]# ps aux | grep nginx
root      17488  0.0  0.0  20556   636 ?        Ss   01:44   0:00 nginx: master process /usr/local/nginx/sbinnginx
nginx     17489  0.0  0.0  23012  1404 ?        S    01:44   0:00 nginx: worker process

修改配置文件

[root@localhost proc]# vi /usr/local/nginx/conf/nginx.conf

worker_processes  3;   ##进程数改为3,工作进程数默认为1,
worker_cpu_affinity 001 010 100;  ##插入这行字段,配置负载均衡,没有闲置的cpu核心

events {
    worker_connections  1024;   ##每个工作进程可以建立的连接数
}
[root@localhost proc]# systemctl restart nginx  ##重启生效

网页压缩

节约带宽成本提高用户体验

[root@localhost conf]# vi /usr/local/nginx/conf/nginx.conf
gzip  on;   ##找到gzip on,去掉前面的注释开启压缩功能
gzip_buffers 4 64k;  //表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果;
gzip_http_version 1.1;
gzip_comp_level 6;  //用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理速度最慢,使用默认即可;
gzip_min_length 1k; //用于设置允许压缩的页面最小字节数;
gzip_vary on;
gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss;  //压缩类型,是对哪些网页文档启用压缩功能;

防盗链

去nginx/html下编入一个网页当成正版

[root@localhost html]# vi /usr/local/nginx/html/index.html
<html><body><h1>test1</h1>
<img src="111.jpg"/>
</body></html>

登录测试
在这里插入图片描述
在去配置一台盗链重定向网站

[root@localhost html]# yum -y install httpd
[root@localhost html]# vi /var/www/html/index.html
<html><body><h1>ni fan shi le</h1>
<img src="222.jpg"/>
</body></html>

回去nginx配置防盗链

[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
 location ~*.(jpg|gif|swf)$ { 匹配以.(jpg|gif|swf)格式结尾的请求
 valid_referers none blocked *.test.com test.com; 合法访问是以.test.com形式的请求
 if ($invalid_referer) 
 如果是非法访问rewrite ^/ http://20.0.0.1/111.jpg; 则重定向到   http://20.0.0.3/222.jpg

日志切割

nginx日志文件需要分割不然文件数量巨大对于管理监控都很难办成,所以需要定期的去做日志切割
把nginx日志文件usr/local/nginx/logs/access.log移动到var/log/nginx下然后用kill-USR1创建新的日志文件accesslog

[root@www logs]# vi/opt/fengge.sh
#!/bin/bash
#Filename: rizhifenge.sh
d=$(date -d "-1 day" "+%Y%m%d")  ##基本上是凌晨所以需要减1天
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ]ll mkdir -p $logs_path     ####创建日志文件目录
mv /usr/local/nginx/logs/access.log ${logs_path}/51xit.top-access.log-$d ##移动并重命名日志文件
kill-USR1 $(cat $pid path)#重建新日志文件
find $logs_path -mtime +30 |xargs rm -rf ##删除30天之前的日志文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值