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
相关推荐
wkd_0079 小时前
Ubuntu 22.04 Samba 连接故障排查记:从“用户名或密码错误”到 NTLM 版本不兼容
linux·运维·ubuntu
烛衔溟11 小时前
TypeScript 类的类型 —— 作为类型使用
javascript·ubuntu·typescript
“码”力全开12 小时前
打破芯片与协议壁垒:基于 Docker + 边缘计算的 GB28181/RTSP 视频智能管理平台架构设计与源码交付方案
docker·音视频·边缘计算
❀搜不到13 小时前
Ubuntu查看指定Python程序的CPU、GPU、内存占用情况
linux·python·ubuntu
Albert Edison15 小时前
【Docker】Ubuntu22.04 安装 Docker 教程
运维·docker·容器
五阿哥永琪15 小时前
Nginx入门教学+实战
运维·nginx
AI服务老曹16 小时前
基于Docker的低代码AI视频管理平台架构解析:打通GB28181/RTSP多协议,支持异构边缘计算与全源码交付
人工智能·低代码·docker
codefan※16 小时前
一键部署私人 LLM:Ollama + Docker 极简指南
运维·docker·容器·大模型·llm·本地部署·ollama
Sisphusssss17 小时前
Ubuntu 装英伟达显卡驱动
linux·运维·ubuntu
姓蔡小朋友18 小时前
TypeScript数据类型
javascript·ubuntu·typescript