Nginx 容器化部署实战:SPA 路由、Cookie 透传与 WebSocket 全配置详解
场景容器内同时跑 Nginx 和 Go 后端。Nginx 负责前端 Vue SPA 静态资源7777 端口、/api反向代理到 Go8888、/static静态资源代理上传的图片/文件并带 30 天强缓存。同时解决四个经典问题SPA 路由 404、Cookie 丢失、WebSocket 握手失败、非 root 用户运行权限。1. 完整配置nginx.conf# Nginx 配置文件 # 容器以非 root 用户 (1000) 运行不切换用户 worker_processes auto; # 自动匹配 CPU 核数 pid /run/nginx/nginx.pid; # PID 文件位置非 root 可写 error_log /var/log/nginx/error.log warn; events { worker_connections 1024; # 单 worker 最大连接数 } http { # 非 root 用户临时目录覆盖 Alpine 默认的 /var/lib/nginx/tmp否则 403 权限错误 client_body_temp_path /tmp/nginx_client_body; proxy_temp_path /tmp/nginx_proxy; fastcgi_temp_path /tmp/nginx_fastcgi; uwsgi_temp_path /tmp/nginx_uwsgi; scgi_temp_path /tmp/nginx_scgi; # MIME 类型 include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; server { listen 7777; # 前端入口端口 server_name _; client_max_body_size 30M; # 上传文件大小限制壁纸/图片/头像 # ───────────────────────────── # 前端静态文件 SPA 路由 # ───────────────────────────── location / { root /usr/share/nginx/html; index index.html; # SPA 路由核心所有未匹配的路径都返回 index.html # 由前端 vue-router 接管路由history 模式 try_files $uri $uri/ /index.html; } # ───────────────────────────── # 后端 API 反向代理 # ───────────────────────────── location /api/ { proxy_pass http://127.0.0.1:8888; # 注意无尾斜杠 保留原始 URI 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; # 确保 cookie 透传解决 session/JWT 丢失问题 proxy_set_header Cookie $http_cookie; proxy_pass_header Set-Cookie; # 禁止 nginx 修改重定向解决 307 二次请求问题 proxy_redirect off; # WebSocket 支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; # 代理超时聊天/SSE 流式接口需要 proxy_connect_timeout 90; proxy_read_timeout 90; } # ───────────────────────────── # 静态文件代理壁纸、聊天文件、头像等 # ───────────────────────────── location /static/ { proxy_pass http://127.0.0.1:8888; # Go 后端 r.Static(/static, ./static) 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; # 静态资源强缓存 30 天 expires 30d; add_header Cache-Control public, immutable; } } }2. 逐段讲解每个配置解决什么问题2.1 SPA 路由 ——try_fileslocation / { root /usr/share/nginx/html; index index.html; try_files $uri $uri/ /index.html; }问题Vue Router 用 history 模式时URL 是/blog/article/123而不是/#/blog/article/123。用户刷新页面时Nginx 找不到对应的真实文件返回 404。解决try_files依次尝试$uri— 命中真实文件如/assets/index-xxx.js$uri/— 命中目录自动找 index.html/index.html— 兜底交给前端路由处理注意后端要有对应的 API 接口或返回 404 页面避免 SEO 无效页面被索引。2.2 Cookie 透传 —— 解决登录态丢失proxy_set_header Cookie $http_cookie; proxy_pass_header Set-Cookie;问题默认 Nginx 会透传 Cookie但某些场景跨域、代理到不同端口会导致 Session 丢失。显式声明后Cookie把客户端 Cookie 原样传给后端Set-Cookie后端设置的 Cookie 原样返回给客户端2.3 307 重定向问题 ——proxy_redirect off问题Go 后端某些接口返回 307如 HTTP→HTTPS 跳转Nginx 默认会改写 Location 头导致客户端跳转到错误地址出现二次请求或死循环。解决proxy_redirect off;让 Location 头原样透传。2.4 WebSocket —— 协议升级proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade;问题WebSocket 握手时客户端发Upgrade: websocket头HTTP/1.0 不支持长连接Nginx 必须用 HTTP/1.1 转发并带上 Upgrade/Connection 头否则握手失败。2.5 非 root 用户运行 —— 临时目录client_body_temp_path /tmp/nginx_client_body; proxy_temp_path /tmp/nginx_proxy;问题容器以USER 1000:1000运行时Nginx 默认的/var/lib/nginx/tmp没有写权限上传文件或代理大响应时直接 403/500。解决把临时目录全部指到/tmp下并在 Dockerfile 里chown给用户 1000。2.6 上传大小限制client_max_body_size 30M;不设置默认只有 1M上传壁纸/图片会报413 Request Entity Too Large。3. 验证与排查命令# 检查配置语法nginx-t-c/etc/nginx/nginx.conf# 容器内实时日志dockerlogs-fledger-service# 手动验证各路由curl-Ihttp://localhost:7777/# 前端页面curl-Ihttp://localhost:7777/api/v1/user/info# API 代理curl-Ihttp://localhost:7777/static/wallpapers/xxx.jpg# 静态资源看 Cache-Control4. 常见问题排查表现象原因解决刷新页面 404没配try_files加try_files $uri $uri/ /index.html;登录后刷新掉登录态Cookie 没透传加proxy_set_header Cookieproxy_pass_header Set-CookieWebSocket 连不上缺 Upgrade 头加proxy_http_version 1.1 Upgrade/Connection 头上传 413体积超限client_max_body_size 30M;上传 403非 root 无写权限临时目录指到/tmp chown图片不更新强缓存 30 天文件名带 hash 或改用no-cache接口 502后端没启动/端口不对检查proxy_pass地址与后端监听端口5. 与 Dockerfile 的配合# 非 root 运行所需创建目录并授权 RUN mkdir -p /var/log/nginx /run/nginx /var/lib/nginx/logs /tmp/nginx_client_body /tmp/nginx_proxy \ chown -R 1000:1000 /app /usr/share/nginx/html /var/log/nginx /run/nginx /var/lib/nginx /tmp/nginx_client_body /tmp/nginx_proxy USER 1000:1000总结这份配置的核心价值一个 7777 端口搞定前后端静态资源 API WebSocket 静态文件外部只暴露一个入口四个经典坑全部规避SPA 404、Cookie 丢失、WS 握手失败、非 root 权限性能静态资源 30 天强缓存后端只处理动态请求

相关新闻

企业级Spring Boot库存管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

企业级Spring Boot库存管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

💡实话实说: 用最专业的技术、最实惠的价格、最真诚的态度服务大家。无论最终合作与否,咱们都是朋友,能帮的地方我绝不含糊。买卖不成仁义在,这就是我的做人原则。 博主介绍: 🎓 江南大学计算机…

2026/8/24 15:04:32 阅读更多 →
IPXWrapper 部署指南:十分钟让红警2等老游戏在 Win11 恢复局域网联机

IPXWrapper 部署指南:十分钟让红警2等老游戏在 Win11 恢复局域网联机

IPXWrapper 部署指南:十分钟让红警2等老游戏在 Win11 恢复局域网联机 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 你在 Win11 上启动《红色警戒2》,点进多人对战,列表里却刷不出任何主机。…

2026/8/24 15:04:32 阅读更多 →
Kimi    LeetCode LCP 37. 最小矩形面积 Java实现

Kimi LeetCode LCP 37. 最小矩形面积 Java实现

LCP 37. 最小矩形面积 - Java 实现题目概述 给定 N 条直线 y kx b(k > 0),求覆盖所有两两交点的最小轴对齐矩形面积。若交点不足或共线则返回 0。核心思路1. 按斜率分桶:相同斜率的直线互相平行,无交点。每个斜率…

2026/8/24 15:04:32 阅读更多 →

最新新闻

从大纲到定稿,一台AI就够了?深度拆解毕夏AI官网的全流程学术写作逻辑

从大纲到定稿,一台AI就够了?深度拆解毕夏AI官网的全流程学术写作逻辑

——当论文写作不再是“散装工序”,而是一条完整的智能流水线 毕夏AI官网:www.bixiaai.com 微信公众号搜一搜:毕夏AI官网 写论文这件事,最让人崩溃的从来不是“写不出来”,而是流程太碎、工具太杂、环节太多。 选题…

2026/8/24 15:59:07 阅读更多 →
毕夏AI官网:你的论文写作“全流程智能总指挥部”

毕夏AI官网:你的论文写作“全流程智能总指挥部”

从“一个人硬扛所有环节”到“一个平台协同作战”,毕夏AI官网正在重塑学术写作的生产方式 一、写论文这件事,为什么永远比你想象中难? 毕业论文大概是每个大学生最想一键跳过的一段经历。毕夏AI官网(www.bixiaai.com,…

2026/8/24 15:59:07 阅读更多 →
网盘直链下载完整教程:8大网盘、5种下载方式,10分钟拿到真实直链

网盘直链下载完整教程:8大网盘、5种下载方式,10分钟拿到真实直链

网盘直链下载完整教程:8大网盘、5种下载方式,10分钟拿到真实直链 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 …

2026/8/24 15:59:07 阅读更多 →
DeepSeek V4 Flash GA:高性价比开源大模型助力AI Agent开发实践

DeepSeek V4 Flash GA:高性价比开源大模型助力AI Agent开发实践

如果你最近在关注大模型领域,可能会发现一个有趣的现象:开发者社区对 DeepSeek 新模型的讨论热度,已经悄然超过了某些头部闭源产品。特别是当 DeepSeek V4 Flash 宣布 GA(General Availability,正式可用)后…

2026/8/24 15:59:07 阅读更多 →
DeepSeek V4 Flash GA:高性价比AI Agent实践指南

DeepSeek V4 Flash GA:高性价比AI Agent实践指南

如果你最近在关注大模型,特别是那些号称“智能体(Agent)”能力很强的模型,可能会发现一个现象:很多模型要么推理速度慢得让人着急,要么API调用成本高得让人心疼,要么就是部署起来极其复杂&#…

2026/8/24 15:59:07 阅读更多 →
iPhone 15 Pro Max LiDAR 3D扫描实战:从原理到模型导出全流程

iPhone 15 Pro Max LiDAR 3D扫描实战:从原理到模型导出全流程

最近在做一个室内设计相关的项目,需要快速获取真实空间的3D模型数据。传统的建模方式耗时耗力,而专业的三维扫描设备又价格不菲。这时,我注意到了手边的 iPhone 15 Pro Max——它搭载的 LiDAR 激光雷达扫描仪,或许能成为一个“平民…

2026/8/24 15:58:07 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →