网站首页 > 技术教程 正文
问题
Nginx反向代理之后,Tomcat应用通过request.getHeader("host")取到的是Nginx的host,并非客户端浏览器地址栏上的真实域名。
例如在某一台服务器上,Tomcat的端口号为8080,Nginx的端口号为80,Nginx反向代理8080端口。
在另一台机器上用浏览器打开http://haha/test访问Tomcat下的应用,获取客户端域名。
System.out.println(request.getHeader("host"));
结果是:
localhost:8080
问题产生的原因
Nginx的反向代理实际上是客户端和真是的应用服务器之间的一个桥梁,客户端(一般是浏览器)访问Nginx服务器,Nginx再去访问Web应用服务器。对于Web应用来说,这次HTTP请求的客户端是Nginx而非真实的客户端浏览器,如果不做特殊处理的话,Web应用会把Nginx当做请求的客户端,获取到的客户端信息就是Nginx的一些信息。
问题解决
Nginx配置HTTP Header。Host包含客户端真实的域名和端口号
proxy_set_header Host $http_host;
Tomcat从Nginx传递过来的HTTP Header中获取客户端信息。
<Valve className="org.apache.catalina.valves.RemoteIpValve" />
后面小编会分享更多运维方面的干货,感兴趣的朋友走一波关注哩~
猜你喜欢
- 2024-09-19 详解Nginx 运维之域名验证的方法示例
- 2024-09-19 在centos7 创建基于域名的虚拟主机nginx服务器
- 2024-09-19 在 Go 代码中如何绑定 Host?(git绑定github)
- 2024-09-19 记录使用Nginx完成一个域名根据User-Agent适配PC和手机
- 2024-09-19 nginx反向代理禁止ip访问及泛解析访问限制(禁止非法域名解析)
- 2024-09-19 Nginx 反向代理任意请求的域名(nginx反向代理域名访问)
- 2024-09-19 高性能Nginx服务器-DNS域名解析概述
- 2024-09-19 搭建gitlab自定义域名(gitlab局域网搭建)
- 2024-09-19 【Docker入门】Nginx反向代理做前端,多个Docker容器共存做后端
- 2024-09-19 Nginx域名配置(nginx域名配置端口 为啥端口丢了)
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)