温馨提示×

debian如何整合nginx tomcat

小樊
46
2026-10-27 00:24:14
栏目: 智能运维

在 Debian 上“整合 Nginx + Tomcat”,通常是指 用 Nginx 做反向代理 / 负载均衡 / 静态资源服务器,Tomcat 负责 Java 应用。下面给你一套生产可用的标准做法(Debian 11/12 通用)。


一、整体架构

客户端
  |
Nginx (80 / 443)
  | 反向代理
Tomcat (8080)
  • Nginx:处理静态资源、HTTPS、负载均衡
  • Tomcat:只跑 Java(不直接对外暴露 8080)

二、安装软件

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装 Nginx

sudo apt install nginx -y

3. 安装 Tomcat(以 Tomcat 10 为例)

sudo apt install tomcat10 tomcat10-admin -y

确认 Tomcat 运行:

systemctl status tomcat10

默认端口:8080


三、Tomcat 基础配置(可选但推荐)

1. 只允许本机访问 Tomcat

编辑:

sudo nano /etc/tomcat10/server.xml

确认 Connector 绑定在:

<Connector port="8080" address="127.0.0.1" ... />

重启:

sudo systemctl restart tomcat10

四、Nginx 反向代理配置(核心)

1. 新建站点配置

sudo nano /etc/nginx/sites-available/tomcat

示例配置(HTTP):

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        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 ~* \.(js|css|png|jpg|jpeg|gif|ico|html)$ {
        proxy_pass http://127.0.0.1:8080;
        expires 30d;
    }
}

2. 启用站点

sudo ln -s /etc/nginx/sites-available/tomcat /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

五、静态资源优化(推荐)

让 Nginx 直接处理静态文件,Tomcat 只跑接口:

location /static/ {
    root /var/lib/tomcat10/webapps/ROOT;
    expires 30d;
}

location / {
    proxy_pass http://127.0.0.1:8080;
}

六、HTTPS(强烈推荐)

1. 使用 Let’s Encrypt

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com

Certbot 会自动修改 Nginx 配置。


七、负载均衡(多 Tomcat)

如果你有多个 Tomcat:

upstream tomcat_cluster {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

server {
    location / {
        proxy_pass http://tomcat_cluster;
    }
}

八、常见问题

1. 获取不到真实 IP

Tomcat server.xml 加:

<Valve className="org.apache.catalina.valves.RemoteIpValve"
       remoteIpHeader="X-Forwarded-For"
       protocolHeader="X-Forwarded-Proto" />

2. WebSocket 支持

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

九、总结

✅ Debian 上 Nginx + Tomcat 整合核心就是:

  • Nginx 反向代理 Tomcat
  • Tomcat 只监听 127.0.0.1
  • 静态资源交给 Nginx
  • HTTPS 交给 Nginx

如果你愿意,我可以:

  • 给你一份 完整可直接用的 nginx.conf
  • 或按你的 Spring Boot / 传统 WAR 场景定制配置

0 踩