资源栈 - www.zyz88.com

Nginx反向代理与HTTPS配置实战:从HTTP到HTTPS全流程指南

admin
2026-09-09 3 阅读 0 评论 0 点赞

在现代Web架构中,Nginx反向代理几乎是标配。它不仅能提升性能和安全性,还能实现负载均衡、SSL终止、静态资源缓存等高级功能。但很多人对Nginx的配置只停留在”复制粘贴”层面,出了问题不知道怎么排查。本文从基础到进阶,系统讲解Nginx反向代理的核心配置。

为什么需要Nginx反向代理

Nginx反向代理是现代Web架构中最常用的部署方式之一。它可以将客户端请求转发到后端的多个应用服务器,实现负载均衡、SSL终止、静态资源缓存等功能。相比直接暴露应用服务端口,反向代理架构更安全、更灵活、性能更好。

基础反向代理配置

最基础的反向代理配置非常简单,只需在server块中添加location规则:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

其中proxy_pass指定后端服务地址,proxy_set_header传递客户端真实IP和协议信息,这对后端应用获取用户IP非常重要。

配置HTTPS

申请SSL证书

使用Certbot自动申请和续期Let’s Encrypt免费证书:

yum install -y certbot python3-certbot-nginx
certbot --nginx -d yourdomain.com -d www.yourdomain.com

强制HTTPS跳转

配置80端口自动跳转到443:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

安全头部配置

在HTTPS的server块中添加安全响应头:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;

负载均衡配置

当后端有多个应用实例时,使用upstream定义服务器组:

upstream backend {
    server 127.0.0.1:3000 weight=3;
    server 127.0.0.1:3001 weight=2;
    server 127.0.0.1:3002 backup;
    keepalive 32;
}

server {
    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

weight设置权重,backup标记为备用服务器,keepalive启用长连接减少握手开销。

缓存与静态资源优化

  • 静态文件直接处理——Nginx直接返回图片、CSS、JS等静态文件,不转发给后端
  • 浏览器缓存——通过expires指令设置静态资源缓存时间
  • Gzip压缩——开启gzip压缩,减少传输体积
  • 代理缓存——对动态页面结果进行缓存,减轻后端压力
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1024;

WebSocket支持

如果后端使用WebSocket(如在线聊天、实时推送),需要额外配置:

location /ws/ {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 86400;
}

性能调优参数

参数 建议值 说明
worker_processes auto 自动匹配CPU核心数
worker_connections 65535 单进程最大连接数
client_max_body_size 50m 最大上传文件大小
proxy_connect_timeout 60s 后端连接超时

配置完成后用nginx -t检查语法,无误后nginx -s reload重载生效。

文章标题 Nginx反向代理与HTTPS配置实战:从HTTP到HTTPS全流程指南
本文由 资源栈 原创发布,转载请注明出处并保留原文链接。