一、HTTP 服务器块(80 端口):必要基础配置
server {
listen 80;
server_name koniaoer.top;
return 301 https://koniaoer.top$request_uri; #永久重定向到https服务
}
二、HTTPS 服务器块(443 端口):分模块分析
1. SSL 核心配置:全为必要配置
listen 443 ssl; # 1.1版本后标准写法
server_name lxwg.biyouxinli.com; # 绑定证书的域名
ssl_certificate /etc/nginx/ssl/biyouxinli.com.pem; # 证书路径
ssl_certificate_key /etc/nginx/ssl/biyouxinli.com.key; # 私钥路径
ssl_session_cache shared:SSL:10m; # SSL会话缓存(提升性能)
ssl_protocols TLSv1.2 TLSv1.3; # 安全协议版本(禁用老旧漏洞版本)
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:...:!RC4"; # 安全加密套件(排除弱加密)
ssl_prefer_server_ciphers on; # 优先使用服务器端加密套件(保障安全)
ssl_session_timeout 10m; # SSL会话超时时间(平衡性能与安全)
2. 基础安全与代理头配置
配置项 | 原因 |
|---|
server_tokens off;
| 隐藏 Nginx 版本号,减少指纹泄露,降低黑客针对性攻击风险 |
proxy_set_header Host $host;(主 server 块)
| 反向代理时传递真实域名到后端,后端服务依赖 Host 识别请求 |
proxy_set_header X-Real-IP $remote_addr;(主 server 块)
| 传递真实客户端 IP 到后端,便于日志审计和业务逻辑(如 IP 限制) |
proxy_set_header REMOTE-HOST $remote_addr;(主 server 块)
| 同 X-Real-IP,部分后端框架依赖该字段获取客户端 IP |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;(主 server 块)
| 传递经过的代理节点 IP,后端可追溯完整请求链路 |
client_max_body_size 1000M;
| 若后端需接收大文件上传(如 1G 以内)则必要;若无此需求,可缩小为 100M 内(默认 1M 过小,需保留但优化大小) |
client_body_buffer_size 500M;
| 默认值(16k/32k)足够,500M 过大导致内存浪费(超过缓冲大小会写入磁盘,无需设置这么大) |
3. 跨域配置:部分必要
add_header Access-Control-Allow-Origin *; # 开启跨域(允许所有域名)
# 以下为注释掉的跨域配置(未生效)
#add_header Access-Control-Allow-Headers X-Requested-With;
#add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS,PUT,DELETE,OPTION';
#add_header Access-Control-Allow-Credentials 'true';
#add_header Access-Control-Allow-Headers 'DNT,Keep-Alive,...';
4. 反向代理核心配置(location 块):全为必要配置
location /koniaoer-screen/ {
proxy_pass http://127.0.0.1:8117/koniaoer-screen/; # 反向代理目标地址
proxy_set_header Host $host; # 传递Host(虽主server块已配置,此处重复但不冲突,可优化但非不必要)
proxy_set_header X-Real-IP $remote_addr; # 传递真实IP
proxy_set_header X-Forwarded-Proto $scheme; # 传递协议(HTTP/HTTPS)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 传递代理链路
proxy_http_version 1.1; # WebSocket依赖的HTTP版本
proxy_set_header Upgrade $http_upgrade; # WebSocket升级头
proxy_set_header Connection "upgrade"; # WebSocket连接标识
}
5. WebSocket 专属配置:全为必要配置
location /lianxin-screen/myWs {
proxy_pass http://127.0.0.1:8117;
proxy_http_version 1.1; # 必要:WebSocket依赖HTTP/1.1
proxy_set_header Upgrade $http_upgrade; # 必要:触发WebSocket升级
proxy_set_header Connection "upgrade"; # 必要:标识WebSocket连接
}
6. 静态资源服务配置(location 块):全为必要配置
location /smartjz-web {
alias /usr/share/nginx/html/smartjz-web/dist; # 静态文件路径
try_files $uri $uri/ /index.html; # 前端路由重写(SPA应用必要)
}
7. 安全限制配置:全为必要配置
location ^~ /api/actuator {
return 403; # 禁止访问Spring Boot Actuator端点
}
8. 文件下载配置:场景必要
location /lianxin/file {
add_header Content-Disposition "attachment"; # 强制浏览器下载文件
alias /data/nginxdata/html/trial; # 文件存储路径
}
9. 错误页面配置:必要配置
error_page 404 /404.html;
location = /404.html {}
error_page 500 502 503 504 /50x.html;
location = /50x.html {}
三、基础配置
# HTTP 80端口:强制重定向到HTTPS
server {
listen 80;
server_name koniaoer.top;
return 301 https://$host$request_uri; # 修复原配置缺少https://的问题
}
# HTTPS 443端口:最基础核心配置
server {
listen 443 ssl;
server_name koniaoer.top;
# SSL核心配置(必须保留,否则HTTPS无法启用)
ssl_certificate /etc/nginx/ssl/koniaoer.top.pem;
ssl_certificate_key /etc/nginx/ssl/koniaoer.top.key;
ssl_protocols TLSv1.2 TLSv1.3; # 安全协议(禁用老旧漏洞版本)
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; # 精简安全加密套件
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 基础安全:隐藏Nginx版本号
server_tokens off;
# 最简化错误页面配置
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /404.html {}
location = /50x.html {}
}
评论区