本文共 2973 字,大约阅读时间需要 9 分钟。
Nginx 通常会在响应头中暴露版本信息,这对于安全性是一个隐患。以下是隐藏版本号的方法。
可以通过以下命令查看当前安装的 Nginx 版本:curl -I http://服务器地址
有两种常用方法:
方法一:修改配置文件方式编辑 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 后,盗链请求将转到指定页面。
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/