Nginx、域名与 HTTPS:把容器服务变成正式网站

讲清 Nginx 反向代理、统一入口、HTTPS、静态资源缓存、上传大小限制和常见 502/404 排查。

已发布文章云原生与运维入门5 分钟阅读发布于 2026年9月3日更新于 2026年9月4日
文章目录
  1. 它从哪里来
  2. 为什么需要 Nginx
  3. 反向代理结构
  4. 基础配置思路
  5. HTTPS 怎么处理
  6. 静态资源缓存
  7. 上传大小限制
  8. 常见故障
  9. 小艾知行录建议
知识目录Docker 从入门到生产部署10 / 14
LOCAL NOTE高亮并记笔记
0 / 1000 · 只保存在这台设备
READER NOTESNginx、域名与 HTTPS:把容器服务变成正式网站》的本机笔记

动手前先知道

这篇文章对应的真实任务是:讲清 Nginx 反向代理、统一入口、HTTPS、静态资源缓存、上传大小限制和常见 502/404 排查。

第一次阅读先弄清“为什么需要这一步、它改变了哪个运行对象、失败时去哪里检查”,再执行命令。命令可以查,运行模型和排障路径才是长期能力。

Nginx 是生产环境的统一入口。用户访问域名时,不应该直接访问前端容器或后端容器,而是先进入 Nginx,再由 Nginx 转发到内部服务。

它从哪里来

Nginx 由 Igor Sysoev 在二十一世纪初开发,并于 2004 年公开发布,最初重点解决高并发连接下的 C10K 问题。它采用事件驱动模型,后来广泛承担静态资源服务、反向代理、负载均衡与 TLS 入口。

为什么需要 Nginx

Nginx 主要负责:

  • 绑定 80/443 端口。
  • 处理域名访问。
  • 配置 HTTPS。
  • 反向代理前端和后端。
  • 静态资源缓存。
  • 上传大小限制。
  • 简单安全头。

对小艾知行录来说,Nginx 是“门面”,web 和 api 都藏在它后面。

反向代理结构

https://你的域名
Nginx
  ├─ /api/*      → api:8080
  ├─ /admin/*    → web:3000
  ├─ /posts/*    → web:3000
  └─ 其他页面     → web:3000

这能让用户只记住一个域名,而不是前端一个端口、后端一个端口。

基础配置思路

示例结构:

server {
    listen 80;
    server_name example.com www.example.com;

    location /api/ {
        proxy_pass http://api:8080/api/;
        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;
    }

    location / {
        proxy_pass http://web: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;
    }
}

实际生产里还要补 HTTPS、缓存、安全头、压缩等配置。

HTTPS 怎么处理

有域名后,建议使用 HTTPS。

流程是:

域名解析到服务器
80 端口可访问
申请证书
Nginx 加载证书
HTTP 自动跳转 HTTPS

如果域名还没买,可以先用公网 IP 测试。等域名准备好,再接 HTTPS。

静态资源缓存

Next.js 的静态资源通常带 hash,可以设置较长缓存。

示例:

location /_next/static/ {
    proxy_pass http://web:3000;
    add_header Cache-Control "public, max-age=31536000, immutable";
}

文章图片如果走 COS,可以由 COS/CDN 处理缓存。上传到项目本机的静态文件,则由 Nginx 控制。

上传大小限制

如果后台上传图片失败,可能不是后端问题,而是 Nginx 限制了请求体大小。

可以配置:

client_max_body_size 20m;

具体大小根据图片上传需求决定。

常见故障

访问 502:

  • web/api 容器没启动。
  • Nginx upstream 服务名写错。
  • 容器不在同一个网络。

访问 404:

  • location 路径匹配错。
  • 前端路由没有正确转发。

接口跨域:

  • API 地址配置不一致。
  • CORS 允许域名没包含正式域名。

HTTPS 不生效:

  • 域名没解析到服务器。
  • 80/443 安全组没开放。
  • 证书路径挂载错。
  • Nginx 没重新加载配置。

小艾知行录建议

正式上线时建议:

  • 域名统一入口。
  • Nginx 暴露 80/443。
  • API、Web、MySQL 不直接暴露公网。
  • HTTP 自动跳 HTTPS。
  • 管理端使用强密码。
  • 上线后用浏览器和 curl 都验收一遍。
JARVIS · 当前文章

有哪里没看懂?可以只问这篇。

Jarvis 会限定在《Nginx、域名与 HTTPS:把容器服务变成正式网站》及其公开关联内容中检索,并把引用定位回原文章节。

JARVIS / ARTICLE针对《Nginx、域名与 HTTPS:把容器服务变成正式网站》提问
当前范围Nginx、域名与 HTTPS:把容器服务变成正式网站不会悄悄扩大到全站
0 / 1000

准备好了。当前只会围绕Nginx、域名与 HTTPS:把容器服务变成正式网站回答。

READER SIGNAL

这篇内容对你有帮助吗?

不需要登录。你的反馈会直接进入作者待处理列表。