当前位置: 首页 > 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.dtcms.com/a/333015.html

相关文章:

  • mysql-DDLy语句案例
  • 基于asp.net#C##VUE框架的独居老人物资配送系统的设计与实现#sql server#visual studio
  • OpenZeppelin Contracts 架构分层分析
  • 基于机器学习的赌博网站识别系统设计与实现
  • 【计算机视觉与深度学习实战】02基于形态学的权重自适应图像去噪系统
  • 【车联网kafka】常用参数及其命令总结(第八篇)
  • 【展厅多媒体】数字展厅小知识:实物识别桌是什么?
  • 杂记 02
  • Java研学-SpringCloud(四)
  • YOLO12 改进、魔改|幅度感知线性注意力MALA,提升小目标、遮挡的检测能力
  • FDBus CBaseWork运行在当前线程
  • AKShare开源金融数据接口库 | 1、介绍
  • 驱动-总线bus注册流程分析
  • QT开发中QString如何截取字符串
  • 怎样使用数据度量测试
  • Leetcode SQL基础50题
  • 旋钮键盘项目---foc讲解(开环)
  • 转换一个python项目到moonbit,碰到报错输出:编译器对workflow.mbt文件中的类方法要求不一致的类型注解,导致无法正常编译
  • 如何将堡塔云WAF迁移到新的服务器
  • 高精度标准钢卷尺优质厂家、选购建议
  • leetcode 342. 4的幂 简单
  • Flink Stream API 源码走读 - keyBy
  • MySQL知识解析
  • 设备管理系统如何改变制造业?_Hawkeye智能运维平台_璞华大数据
  • Docker安装——配置国内docker镜像源
  • 智能家居【home assistant】(一)-在Windows电脑上运行home assistant
  • 智能家居【home assistant】(二)-集成xiaomi_home
  • 朗空量子与 Anolis OS 完成适配,龙蜥获得抗量子安全能力
  • AI智能家居技术应用实训室解决方案
  • Flinksql bug: Heartbeat of TaskManager with id container_XXX timed out.