Ubuntu 24.04 使用 Nginx + Docker Tomcat9 + HTTPS 完整部署教程

目录

适用于:

一、准备条件

[二、确认 Tomcat 已运行](#二、确认 Tomcat 已运行)

三、域名解析(极其重要)

四、开放服务器端口

[Ubuntu 防火墙](#Ubuntu 防火墙)

云服务器安全组

[五、安装 Nginx](#五、安装 Nginx)

[启动 Nginx](#启动 Nginx)

查看状态

[六、浏览器测试 Nginx](#六、浏览器测试 Nginx)

[七、配置 Nginx 反向代理](#七、配置 Nginx 反向代理)

[1. 创建配置文件](#1. 创建配置文件)

[2. 写入配置](#2. 写入配置)

[3. 启用配置](#3. 启用配置)

[4. 测试 Nginx 配置](#4. 测试 Nginx 配置)

[5. 重启 Nginx](#5. 重启 Nginx)

八、测试反向代理

[九、安装 HTTPS(Let's Encrypt)](#九、安装 HTTPS(Let's Encrypt))

[1. 安装 Certbot](#1. 安装 Certbot)

[2. 自动申请 HTTPS](#2. 自动申请 HTTPS)

[3. 按提示操作](#3. 按提示操作)

输入邮箱

同意协议

选择域名

[4. 自动完成 HTTPS](#4. 自动完成 HTTPS)

[十、现在你的网站已经 HTTPS 化](#十、现在你的网站已经 HTTPS 化)

[十一、HTTPS 自动续期](#十一、HTTPS 自动续期)

[十二、最终 Nginx HTTPS 配置(自动生成)](#十二、最终 Nginx HTTPS 配置(自动生成))

十三、推荐生产环境优化(非常重要)

[1. 增加上传大小限制](#1. 增加上传大小限制)

[2. 开启 gzip](#2. 开启 gzip)

[3. 重启 Nginx](#3. 重启 Nginx)

十四、推荐目录结构

十五、完整架构图

十六、以后更新项目

十七、后续升级(生产环境)

十八、最终生产环境结构建议


适用于:

  • Ubuntu

  • Nginx

  • Docker

  • Apache Tomcat

  • demo.war

最终效果:

用户访问:

复制代码
https://域名/demo

实际流向:

复制代码
浏览器
   ↓ HTTPS(443)
Nginx
   ↓ 反向代理
Tomcat(Docker 8086)
   ↓
demo.war

这样是生产环境标准方案。


一、准备条件

你必须已经具备:

条件 是否需要
云服务器 必须
域名 必须
Docker 已安装 必须
tomcat:9 已运行 必须
demo.war 已部署 必须

二、确认 Tomcat 已运行

先检查:

复制代码
docker ps

确保存在:

复制代码
tomcat9

并且:

复制代码
0.0.0.0:8086->8080/tcp

三、域名解析(极其重要)

进入你的域名控制台:

例如:

添加:

类型 主机记录
A @ 你的服务器IP
A www 你的服务器IP

例如:

复制代码
example.com -> 1.2.3.4

四、开放服务器端口

必须开放:

端口 用途
80 HTTP
443 HTTPS
8086 Tomcat

Ubuntu 防火墙

执行:

复制代码
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 8086/tcp

云服务器安全组

还必须开放:

复制代码
80
443
8086

否则 HTTPS 不通。


五、安装 Nginx

安装:

复制代码
apt install -y nginx

启动 Nginx

复制代码
systemctl enable nginx
systemctl start nginx

查看状态

复制代码
systemctl status nginx

出现:

复制代码
active (running)

即可。


六、浏览器测试 Nginx

浏览器访问:

复制代码
http://你的IP

如果看到:

复制代码
Welcome to nginx!

说明成功。


七、配置 Nginx 反向代理


1. 创建配置文件

进入:

复制代码
cd /etc/nginx/sites-available

创建:

复制代码
vim demo

2. 写入配置

把:

复制代码
server {
    listen 80;
    server_name 你的域名 www.你的域名;

    location / {
        proxy_pass http://127.0.0.1:8086;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

修改为你的真实域名。

例如:

复制代码
server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass http://127.0.0.1:8086;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

3. 启用配置

执行:

复制代码
ln -s /etc/nginx/sites-available/demo /etc/nginx/sites-enabled/

4. 测试 Nginx 配置

复制代码
nginx -t

如果看到:

复制代码
syntax is ok
test is successful

即可。


5. 重启 Nginx

复制代码
systemctl restart nginx

八、测试反向代理

现在访问:

复制代码
http://你的域名/demo

应该已经能访问 Tomcat 项目。


九、安装 HTTPS(Let's Encrypt)

我们使用:

Certbot

免费 HTTPS。


1. 安装 Certbot

执行:

复制代码
apt install -y certbot python3-certbot-nginx

2. 自动申请 HTTPS

执行:

复制代码
certbot --nginx

3. 按提示操作

它会问:

输入邮箱

复制代码
Enter email address

输入你的邮箱。


同意协议

输入:

复制代码
Y

选择域名

选择:

复制代码
example.com
www.example.com

4. 自动完成 HTTPS

成功后会看到:

复制代码
Congratulations!

十、现在你的网站已经 HTTPS 化

访问:

复制代码
https://你的域名/demo

浏览器会显示:

🔒 安全锁。


十一、HTTPS 自动续期

Let's Encrypt 90 天有效。

但 Certbot 会自动续期。

测试:

复制代码
certbot renew --dry-run

如果成功:

说明自动续期正常。


十二、最终 Nginx HTTPS 配置(自动生成)

Certbot 通常会自动生成:

复制代码
server {
    server_name example.com www.example.com;

    location / {
        proxy_pass http://127.0.0.1:8086;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}

十三、推荐生产环境优化(非常重要)


1. 增加上传大小限制

编辑:

复制代码
vim /etc/nginx/nginx.conf

http {} 中增加:

复制代码
client_max_body_size 200M;

否则上传大文件会:

复制代码
413 Request Entity Too Large

2. 开启 gzip

在:

复制代码
http {}

里增加:

复制代码
gzip on;
gzip_types text/plain text/css application/json application/javascript;

3. 重启 Nginx

复制代码
systemctl restart nginx

十四、推荐目录结构

复制代码
/usr/local/tomcat
├── webapps
│   ├── demo.war
│   └── demo
├── logs
└── conf

十五、完整架构图

复制代码
用户浏览器
     ↓
HTTPS :443
     ↓
Nginx
     ↓
http://127.0.0.1:8086
     ↓
Docker Tomcat9
     ↓
demo.war

十六、以后更新项目

只需:

复制代码
docker restart tomcat9

Nginx 不需要动。


十七、后续升级(生产环境)

后续可以继续升级:

功能 推荐
数据库 MySQL Docker
缓存 Redis
自动部署 Jenkins/GitHub Actions
多容器 Docker Compose
高并发 Nginx负载均衡
安全 Fail2ban
监控 Prometheus + Grafana
日志 ELK
CDN Cloudflare

十八、最终生产环境结构建议

复制代码
Internet
   ↓
Cloudflare(可选)
   ↓
Nginx + HTTPS
   ↓
Docker Tomcat9
   ↓
demo.war
   ↓
MySQL / Redis
相关推荐
http阿拉丁神猫2 小时前
Docker知识点汇总(6~10)
运维·docker·容器
亚空间仓鼠2 小时前
Docker容器化高可用架构部署方案
docker·容器·架构
MonkeyKing_sunyuhua2 小时前
阿里云的ECS怎么安装docker和docker compose
阿里云·docker·eureka
GISer_Jing3 小时前
GitHub Actions 完整 Token/Secret 配置详解(Vercel + Docker 2026最新版)
docker·容器·github
我是Superman丶3 小时前
Docker 镜像加速
运维·docker·容器
杨浦老苏3 小时前
本地AI图像处理工具SnapOtter
docker·ai·工具·群晖·图片
Lw老王要学习3 小时前
Windows 11 安装配置 Docker Desktop 并部署 sqlbot 完整指南
windows·docker·容器·agent·sqlbot
GISer_Jing3 小时前
现代全栈工程化实战:Git+Docker+Vercel+CI/CD
git·ci/cd·docker
Nice_Fold3 小时前
Kubernetes Ingress 七层负载均衡与Nginx实现
nginx·kubernetes·负载均衡