博客
关于我
Nginx优化与防盗链
阅读量:525 次
发布时间:2019-03-07

本文共 2973 字,大约阅读时间需要 9 分钟。

Nginx 优化与防盗链配置指南

一、隐藏版本号

Nginx 通常会在响应头中暴露版本信息,这对于安全性是一个隐患。以下是隐藏版本号的方法。

1. 查看版本号

可以通过以下命令查看当前安装的 Nginx 版本:curl -I http://服务器地址

2. 隐藏版本号方法

有两种常用方法:

方法一:修改配置文件方式编辑 Nginx 配置文件:

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

http 块内添加:

server_tokens off;

提交修改并重启 Nginx:

systemctl restart nginx

此时,运行 curl -I http://服务器地址 应无版本信息显示。

方法二:修改源码文件,重新编译安装编辑源码文件:

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

修改版本号定义:

#define NGINX_VERSION "1.1.1"#define NGINX_VER "IIS" NGINX_VERSION

在依赖项中安装:

cd /opt/nginx-1.12.0/./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_modulemake && make install

重启 Nginx 后,版本信息将被隐藏。

二、修改用户与组

默认情况下,Nginx 使用 root 用户和组进行操作,子进程使用 nginx 组。若需要更细粒度的权限控制,可修改配置文件:

编辑 Nginx 配置文件:

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

取消注释并修改用户和组:

user nginx nginx;

重启服务后,主进程将由 root 创建,子进程由 nginx 组创建。

三、缓存时间

优化缓存时间对于提升网站性能至关重要。以下是两种常见地区缓存的方法。

图片缓存编辑配置文件:

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

location 块中添加图片缓存规则:

location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {    expires 1d;}

重启 Nginx 后,图片请求将触发 1 天的缓存。

静态资产缓存默认情况下,Nginx 已能缓存静态资源。如需进一步优化,可在 location / 块内添加:

expires 30m;

四、日志切割

脚本实现

vim /fenge.sh#!/bin/bashd=$(date -d "-1 day" "+%Y%m%d")  # 显示前一天的时间logs_path="/var/log/nginx"pid_path=`cat /usr/local/nginx/logs/nginx.pid`[ -d $logs_path ] || mkdir -p $logs_pathmv /usr/local/nginx/logs/access.log ${logs_path}/kgc.com-access.log-${d}kill -USR1 $pid_path  # 重建日志文件find $logs_path -mtime +30 -exec rm -rf {} \;

设置自动切割:

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

五、连接超时

优化指南HTTP KeepAlive 默认为 75 秒,建议减少保留时间以降低资源消耗:

vim /usr/local/nginx/conf/nginx.confkeepalive_timeout 65 180;client_header_timeout 80;client_body_timeout 80;

保存修改并重启 Nginx。

六、更改进程数

查看CPU核数

cat /proc/cpuinfo | grep -c "physical id"

设置进程数编辑配置文件:

vim /usr/local/nginx/conf/nginx.confworker_processes 2;worker_cpu_affinity 01 10;

重启服务后,Nginx 将开启相应的进程数。

七、配置网页压缩

开启 Gzip 压缩编辑配置文件:

vim /usr/local/nginx/conf/nginx.confgzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 6;gzip_vary on;

指定压缩类型:

gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;

保存并重启服务后,网页传输将支持 Gzip 压缩。

八、配置防盗链

防盗链场景防盗链的目标是阻止其他网站盗用你服务器上的资源。以下是两种常见实现方式:

1. 生成备用域名/etc/hosts 中添加伪装:

echo "192.168.221.70 www.abc.com" >> /etc/hostsecho "192.168.221.80 www.def.com" >> /etc/hosts

2. 配置 Nginx 防盗链nginx.conf 中添加:

location ~*\.(jpg|gif|swf)$ {    valid_referers *.abc.com abc.com;    if ($invalid_referer) {        rewrite ^/ http://www.abc.com/error.png;        return 403;    }}

保存修改并重启 Nginx 后,盗链请求将转到指定页面。

九、FPM 参数优化

pm 参数配置编辑 PHP-FPM 配置文件:

vim /usr/local/php/etc/php-fpm.conf

设置基本参数:

pm = dynamicpm.max_children=20pm.start_servers=5pm.min_spare_servers=2pm.max_spare_servers=8

重启 PHP-FPM:

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid"`

验证配置:

netstat -anpt | grep 9000

以上配置均可通过优化 Every_byte 服务器性能,同时杜绝盗链问题。在实际应用中,建议根据具体需求循环调整参数。

转载地址:http://lancz.baihongyu.com/

你可能感兴趣的文章
Notification 使用详解(很全
查看>>
NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
查看>>
Now trying to drop the old temporary tablespace, the session hangs.
查看>>
nowcoder—Beauty of Trees
查看>>
np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?
查看>>
np.power的使用
查看>>
NPM 2FA双重认证的设置方法
查看>>
npm ERR! ERESOLVE could not resolve报错
查看>>
npm error Missing script: “server“npm errornpm error Did you mean this?npm error npm run serve
查看>>
npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
查看>>
npm install digital envelope routines::unsupported解决方法
查看>>
npm install 卡着不动的解决方法
查看>>
npm install 报错 EEXIST File exists 的解决方法
查看>>
npm install 报错 ERR_SOCKET_TIMEOUT 的解决方法
查看>>
npm install 报错 fatal: unable to connect to github.com 的解决方法
查看>>
npm install 报错 no such file or directory 的解决方法
查看>>
npm install 权限问题
查看>>
npm install报错,证书验证失败unable to get local issuer certificate
查看>>
npm install无法生成node_modules的解决方法
查看>>
npm install的--save和--save-dev使用说明
查看>>