Nginx进阶配置实战全攻略:SSL部署、防盗链、压缩、代理、限流、请求合并
文章目录
- Nginx进阶配置实战全攻略:SSL部署、防盗链、压缩、代理、限流、请求合并
-
- 一、SSL证书部署+HTTP强制跳转:实现HTTPS加密访问
-
- 1.1 先装SSL模块(Nginx默认未内置)
- 1.2 HTTPS核心配置(443端口)
- 1.3 HTTP强制跳转到HTTPS(80端口)
- 二、Nginx防盗链:保护静态资源不被盗用
-
- 2.1 核心原理
- 2.2 实战配置(以图片为例)
- 2.3 局限性与补充
- 三、GZIP压缩:让资源变小,加载更快
-
- 3.1 基础配置(新手首选)
- 3.2 生产环境优化配置(兼顾效果与性能)
- 四、反向代理:实现免备案访问
-
- 4.1 核心原理
- 4.2 服务器A的Nginx配置
- 五、流量限流:防止服务被冲垮
-
- 5.1 限制请求频率(按IP)
- 5.2 限制并发连接数
- 六、请求合并:减少请求次数,加速加载
-
- 6.1 先安装concat模块(需编译)
- 6.2 核心配置
- 6.3 前端使用方法
- 七、通用配置注意事项
- 九、Nginx可视化配置生成器
- 八、总结
Nginx作为高性能的Web服务器和反向代理工具,是Web服务运维的核心利器。本文整合了SSL证书部署、资源防盗链、GZIP压缩、反向代理、流量限流、请求合并六大核心进阶配置,帮你搭建更安全、更高效、更稳定的Web服务,新手也能跟着落地。
一、SSL证书部署+HTTP强制跳转:实现HTTPS加密访问
HTTPS通过SSL/TLS协议加密数据传输,是网站安全的基础要求,搭配HTTP强制跳转能确保所有用户都走加密链路。
1.1 先装SSL模块(Nginx默认未内置)
若已安装Nginx,无需重装,仅需重新编译添加SSL模块(保留原有配置):
bash
# 进入Nginx解压目录
cd /opt/module/nginx-1.13.7
# 重新配置,新增ssl模块(保留原有模块)
./configure \
--prefix=/opt/module/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_ssl_module
# 编译安装(仅新增模块,不覆盖原有文件)
make && make install
1.2 HTTPS核心配置(443端口)
将SSL证书(.crt)和私钥(.key)放到Nginx配置目录,配置443端口并优化加密规则:
nginx
server {
listen 443 ssl; # 显式声明SSL
server_name www.imoocdsp.com; # 绑定备案域名
# 证书和私钥路径
ssl_certificate 1_www.imoocdsp.com_bundle.crt;
ssl_certificate_key 2_www.imoocdsp.com.key;
# SSL优化配置
ssl_session_cache shared:SSL:1m; # 共享会话缓存
ssl_session_timeout 5m; # 会话超时
ssl_protocols TLSv1.2 TLSv1.3; # 禁用不安全的旧协议
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE:!3DES;
ssl_prefer_server_ciphers on; # 优先用服务器加密套件
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # 强制HTTPS
# 业务转发
location / {
proxy_pass http://tomcats/;
index index.html index.htm;
}
}
1.3 HTTP强制跳转到HTTPS(80端口)
用301永久重定向,既安全又不影响搜索引擎收录:
nginx
server {
listen 80;
server_name nature.us.com author-welcome.nature.us.com springernature.us.com;
return 301 https://$server_name$request_uri; # 保留请求路径跳转
}
二、Nginx防盗链:保护静态资源不被盗用
防止图片、视频、CSS/JS等静态资源被其他网站盗用,减少带宽浪费。
2.1 核心原理
通过HTTP的Referer请求头判断请求来源,仅允许合法域名访问,非法请求拦截或跳转。
2.2 实战配置(以图片为例)
nginx
# 匹配图片资源后缀(可扩展至CSS、JS)
location ~^/.*\.(png|jpg|gif|jfif|jpeg|webp) {
valid_referers www.mbqm.com *.mbqm.com; # 允许主域名+子域名
if ($invalid_referer){
# return 403; # 简单拦截(返回403)
rewrite ^/ http://ip:8080/error.html; # 跳转自定义错误页
break;
}
root html; # 资源存储目录
expires 3d; # 浏览器缓存,减少重复请求
}
2.3 局限性与补充
- Referer可被伪造,对付普通盗用足够,高安全需求可搭配令牌验证、加水印;
- 自身网页可加
<meta name="referrer" content="no-referrer">隐藏Referer,防止被伪造。
三、GZIP压缩:让资源变小,加载更快
压缩HTML、CSS、JS等文本资源,体积可减少30%-50%,大幅提升网页加载速度。
3.1 基础配置(新手首选)
nginx
http {
gzip on; # 开启压缩
gzip_min_length 1k; # 小于1KB不压缩(性价比低)
gzip_comp_level 2; # 压缩等级(1-10,数字越大越费CPU)
# 要压缩的文件类型
gzip_types text/bash application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on; # 适配代理服务器
}
3.2 生产环境优化配置(兼顾效果与性能)
nginx
http {
gzip on;
gzip_min_length 1k;
gzip_comp_level 6; # 性价比最高的压缩等级
gzip_types
text/plain text/css text/xml text/javascript
application/javascript application/x-javascript application/json
application/xml application/xml+rss image/jpeg image/gif image/png;
gzip_vary on;
gzip_http_version 1.1;
gzip_buffers 2 4k; # 压缩缓冲区
gzip_static on; # 优先用手动压缩的.gz文件,减少实时压缩损耗
gzip_disable "MSIE [1-6]."; # 兼容老IE浏览器
}
四、反向代理:实现免备案访问
绕开国内服务器备案限制,通过免备案服务器转发请求到国内未备案服务器。
4.1 核心原理
用户访问「已备案/海外免备案服务器A」的合法域名,A将请求转发到「国内未备案服务器B」,实现B上的网站正常访问。
4.2 服务器A的Nginx配置
nginx
server {
listen 80;
server_name 免备案域名; # 服务器A的合法域名
location / {
proxy_pass 服务器B的IP:端口; # 转发到国内未备案服务器
}
}
提示:确保A和B网络互通,配置后重启Nginx生效。
五、流量限流:防止服务被冲垮
限制请求频率或并发连接数,避免突发流量、恶意请求压垮服务器。
5.1 限制请求频率(按IP)
nginx
http {
# 定义限流规则:10MB内存存IP记录,每秒最多10个请求
limit_req_zone $binary_remote_addr zone=serviceRateLimit:10m rate=10r/s;
server {
listen 80;
server_name 你的域名;
location / {
# 基础限流(超量直接拒绝)
# limit_req zone=serviceRateLimit;
# 兼容突发流量:允许20个额外请求,且立即处理
limit_req zone=serviceRateLimit burst=20 nodelay;
proxy_pass http://upstream_cluster1; # 转发后端
}
}
}
5.2 限制并发连接数
nginx
http {
# 按IP限制:10MB内存存记录
limit_conn_zone $binary_remote_addr zone=perip:10m;
# 按服务器总连接限制
limit_conn_zone $server_name zone=perserver:10m;
server {
listen 80;
server_name 你的域名;
limit_conn perip 20; # 单个IP最多20个并发连接
limit_conn perserver 100; # 服务器总连接上限100
location / {
proxy_pass http://upstream_cluster1;
}
}
}
六、请求合并:减少请求次数,加速加载
解决浏览器对单域名并发请求限制(约6个),将多个CSS/JS文件合并为一个请求。
6.1 先安装concat模块(需编译)
bash
cd /usr/local/src/
# 下载Nginx和concat模块源码
wget http://nginx.org/download/nginx-1.4.2.tar.gz
wget https://github.com/alibaba/nginx-http-concat/archive/master.zip -O nginx-http-concat-master.zip
# 解压
unzip nginx-http-concat-master.zip
tar -xzvf nginx-1.4.2.tar.gz
# 配置编译参数
cd nginx-1.4.2
./configure --prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module \
--add-module=../nginx-http-concat-master
# 编译安装
make && make install
6.2 核心配置
nginx
server {
listen 80;
server_name localhost;
root /html; # 网站目录
location /static/css/ {
concat on; # 开启合并
concat_max_files 20; # 最多合并20个文件
concat_delimiter /* 分隔符 */; # 合并后文件的分隔符
concat_unique off; # 允许合并不同类型资源
concat_types text/css application/javascript; # 可合并的类型
}
}
6.3 前端使用方法
用??拼接多个文件路径即可:
html
<link rel="stylesheet" href="/static/css/??a.css,b.css,c.css">
七、通用配置注意事项
- 任何配置修改后,先执行
nginx -t检查语法,无误后用nginx -s reload平滑重载,不中断服务; - SSL证书有有效期(免费证书约90天),需定期续期,可配置自动化提醒;
- 防盗链配置要准确写清资源后缀,避免拦截合法请求;
- 限流参数需根据服务器性能、业务流量调整,避免过度限制正常访问;
- GZIP压缩等级不宜过高(推荐2-6),平衡压缩效果和CPU消耗。
九、Nginx可视化配置生成器
网址 :https://www.newkit.site/tools/nginx-config-builder/

新手 / 快速配置,用在线可视化生成器(NginxConfig),无需写代码,填参数即生成;
其余:
| 工具名称 | 核心功能 | 适用场景 | 访问地址 |
|---|---|---|---|
| NginxConfig | 支持SSL、反向代理、压缩、限流、防盗链等全场景,生成的配置符合最佳实践 | 生产环境/通用场景 | https://nginxconfig.io/ |
| DigitalOcean Nginx Config Generator | 专注反向代理、静态站点、PHP、SSL配置,简洁易上手 | 基础场景/新手 | https://www.digitalocean.com/community/tools/nginx |
| 菜鸟工具 Nginx 配置生成 | 中文界面,支持防盗链、GZIP、反向代理,适配国内场景 | 国内站点/快速配置 | https://c.runoob.com/front-end/593/ |
八、总结
本文覆盖的SSL部署、防盗链、GZIP压缩、反向代理、限流、请求合并,是Nginx最核心的进阶配置。实际使用时无需死记参数,核心是:
- 安全层面:靠SSL+防盗链保障数据和资源安全;
- 性能层面:靠GZIP+请求合并减少传输体积和请求次数;
- 稳定性层面:靠反向代理+限流避免服务崩溃;
根据服务器性能、业务规模调整参数,就能让Nginx发挥最大价值。
文章结束,喜欢就给个一键三连吧,你的肯定是我最大的动力,点赞上一千我就是脑瘫也出下章