当前位置: 首页 > news >正文

Nginx反向代理Tomcat实战指南

在生产环境中,直接将Tomcat服务器暴露给外部网络并不是最佳实践。通过使用反向代理服务器(如Nginx或Apache HTTP Server),可以提高安全性、性能和灵活性。本文将介绍如何结合Nginx作为反向代理来部署Tomcat应用。

结合反向代理实现 Tomcat 部署

可以利用iptables策略实现端口重定向或DNAT,解决非标准端口的问题

iptables -t nat -A PREROUTING -p tcp --dport 80 --j REDIRECT --to-port 8080

但无法实现负载均衡

常见部署方式介绍

在这里插入图片描述

standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐
反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp 代理给Tomcat

  • LNMT:Linux + Nginx + MySQL + Tomcat
  • LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat
    前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更适合
  • LNMT:Linux + Nginx + MySQL + Tomcat
    多级代理
  • LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat

利用 Nginx 反向代理至同一个主机的 Tomcat

配置说明
在这里插入图片描述
利用nginx反向代理功能,实现上图的代理功能,将用户请求全部转发至指定的同一个tomcat主机
利用nginx指令proxy_pass 可以向后端服务器转发请求报文,并且在转发时会保留客户端的请求报文中的 host首部

[root@ubuntu2404 ~]#apt install -y nginx
[root@ubuntu2404 ~]#vim /etc/nginx/conf.d/www.caoge.conf
upstream tomcat {server 192.168.1.30:8080;server 192.168.1.40:8080;}
server{listen 80;server_name www.caoge.com;location / {proxy_pass http://tomcat;
}
}
[root@ubuntu2404 ~]#nginx -t
[root@ubuntu2404 ~]#systemctl restart nginx
[root@ubuntu2404 ~]#vim /etc/hosts
192.168.1.20 www.caoge.com

实战案例1:实现 HTTP

环境说明

一台主机,实现nginx和tomcat
tomcat上有两个新机器当node1,node2
[root@nginx ~]#apt install nginx[root@node1 ~]#apt install -y tomcat10
[root@node1 ~]#apt install -y openjdk-21-jdk
[root@node2 ~]#apt install -y tomcat10
[root@node2 ~]#apt install -y openjdk-21-jdk#修改nginx.conf配置文件
[root@nginx ~]#vim /etc/nginx/conf.d/tomcat.conf
server{listen 80;server_name node1.caoge.com;location / {proxy_pass http://192.168.1.70:8080;     
}
}
[root@nginx ~]#systemctl restart nginx.service [root@nginx ~]#vim /etc/hosts
192.168.1.60 node1.caoge.com
[root@nginx ~]#curl http://node1.caoge.com
node1[root@nginx ~]#vim /etc/nginx/conf.d/tomcat.conf
server{listen 80;server_name node1.caoge.com;location / {proxy_pass http://192.168.1.80:8080;     
}
}
[root@nginx ~]#systemctl restart nginx.service [root@nginx ~]#curl http://node1.caoge.com
node2
[root@nginx ~]#vim /etc/nginx/conf.d/tomcat.conf
upstream tomcat {server 192.168.1.80:8080;server 192.168.1.70:8080;}       
server{listen 80;server_name node1.caoge.com;
location / {proxy_pass http://tomcat;           
}
}
[root@nginx ~]#systemctl restart nginx.service 
[root@nginx ~]#curl http://node1.caoge.com
node2
[root@nginx ~]#curl http://node1.caoge.com
node1

实战案例2:实现 HTTPS

tomcat 实现 https的参考文档

https://help.aliyun.com/document_detail/98576.html?spm=5176.b657008.0.0.5a471b48Cyahpi

虽然在Tomcat上可以实现HTTPS,不仅配置复杂,而且会导致性能问题,因此生产中更多的是通过Nginx 实现HTTPS再反向代理至Tomcat

Nginx实现反向代理实现 http 自动跳转至 https

server {listen 80;server_name blog.wang.org;return 302 https://$host$request_uri;
}
server {listen 443 ssl;server_name blog.wang.org;ssl_certificate   /etc/nginx/ssl/www.wang.org.pem;ssl_certificate_key /etc/nginx/ssl/www.wang.org.key;location / {proxy_pass http://127.0.0.1:8080;proxy_set_header Host  $http_host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

Nginx实现反向代理实现 http 自动跳转至 https 并同时实现动静分离

http://www.xdnf.cn/news/1304263.html

相关文章:

  • 8月4日实训考察:重庆五一职院走进成都国际影像产业园
  • PCA降维 提升模型训练效率
  • 【科研绘图系列】R语言绘制多种饼图
  • nVidia Tesla P40使用anaconda本地重编译pytorch3d成功加载ComfyUI-3D-Pack
  • 前端动画库之gsap
  • 深入解析五大通信协议:TCP、UDP、HTTP_HTTPS、WebSocket与GRPC
  • Al大模型-本地私有化部署大模型-大模型微调
  • 腾讯位置商业授权微信小程序逆地址解析(坐标位置描述)
  • day29-进程和线程(2)
  • C语言:指针(5)
  • lcm通信库介绍与使用指南
  • 使用Docker容器化Python测试Pytest项目并配置GitHub Actions CI/CD流程
  • Pytest项目_day16(yaml和parametrize结合)
  • week1-[循环嵌套]蛇
  • Vue2与Vue3生命周期函数全面解析:从入门到精通
  • Linux操作系统--多线程(锁、线程同步)
  • 基本电子元件:贴片电阻器的种类
  • 达梦数据库使用控制台disql执行脚本
  • Mac(二)Homebrew 的安装和使用
  • HDFS数据倾斜导致MapReduce作业失败的排查与优化实践
  • 一个集成多源威胁情报的聚合平台,提供实时威胁情报查询和播报服务、主动拦截威胁IP,集成AI等多项常用安全类工具
  • mac 通过homebrew 安装和使用nvm
  • 16进制pcm数据转py波形脚本
  • 超越模型中心:AI智能体(Agent)革命来临,AgenticOps将如何颠覆你的工作流?
  • Java-JVM是什么JVM的类加载机制
  • PAT 1064 Complete Binary Search Tree
  • 计算机网络:(十五)TCP拥塞控制与TCP拥塞控制算法
  • 【161页PPT】智慧方案企业数字化转型概述(课件)(附下载方式)
  • AutoSar AP平台功能组并行运行原理
  • [论文阅读] 人工智能 | 当Hugging Face遇上GitHub:预训练语言模型的跨平台同步难题与解决方案