|
server {
listen 80;
#listen 8001;
listen 443 ssl;
http2 on;
ssl_certificate /etc/nginx/https-cert/jnajszj.mmwzcloud.com.pem;
ssl_certificate_key /etc/nginx/https-cert/jnajszj.mmwzcloud.com.key;
server_name jszj.mmwzcloud.com default_server;
# 1. 优化 SSL 配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
# 2. 优化会话缓存
ssl_session_cache shared:SSL:10m; # 减小到 10m
ssl_session_timeout 1h;
ssl_session_tickets on;
# 3. 禁用有问题的功能
ssl_stapling off;
ssl_stapling_verify off;
# 4. 关键优化:减小缓冲区
ssl_buffer_size 4k; # 从 16k 改为 4k
# 防止 MIME 类型混淆攻击
add_header X-Content-Type-Options nosniff;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
location /api/ {
proxy_hide_header Access-Control-Allow-Origin;
add_header Access-Control-Allow-Origin *;
add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept";
add_header Access-Control-Allow-Methods GET,POST,OPTIONS,HEAD,PUT,DELETE;
add_header Access-Control-Allow-Credentials false;
if ($request_method = OPTIONS) {
return 204;
}
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme; # 重要!告诉后端是 HTTPS
proxy_pass http://jszj:38080/;
#proxy_pass http://www.baidu.com/;
}
#h5项目
location /apph/ {
alias /usr/share/nginx/html/apph/;
# VUE History 模式下刷新网页404问题
try_files $uri $uri/ /apph/index.html;
index index.html;
#expires 12h;
add_header Cache-Control "no-cache,must-revalidate";
error_log /etc/nginx/logs/error.log;
access_log /etc/nginx/logs/access.log;
}
#h5项目
location /static-file/ {
alias /usr/share/nginx/html/static-file/;
# VUE History 模式下刷新网页404问题
#try_files $uri $uri/ /apph/index.html;
#index index.html;
#expires 12h;
add_header Cache-Control "no-cache,must-revalidate";
error_log /etc/nginx/logs/error.log;
access_log /etc/nginx/logs/access.log;
}
#后台管理
location / {
# 项目在 /usr/share/nginx/html/vue-admin 目录
root /usr/share/nginx/html/vue-admin;
index index.html;
# 修正 try_files,避免循环
try_files $uri $uri/ /index.html;
add_header Cache-Control "no-cache,must-revalidate";
error_log /etc/nginx/logs/error.log;
access_log /etc/nginx/logs/access.log;
}
error_page 429 /429;
location = /429 {
default_type application/json;
return 429 '{"code":429,"message":"当前访问人数过多, 请稍后再试"}';
}
error_page 502 /server_shutdown;
error_page 503 /server_shutdown;
location = /server_shutdown {
default_type application/json;
return 502 '{"code":502,"message":"服务器升级维护中, 请稍后再试"}';
}
}
|