nginx均衡多tomcat环境配置,及这种环境下的remoteIp及ServerName获取方式

当单台应用已经无法应对日渐增长的访问量时,我们往往会采用分布式部署,这里简单介绍下单台nginx结合多台tomcat进行单应用部署的步骤:

1、使用upstream,在nginx的nginx.conf文件中的加入如下配置:

http {

#.....这里省略其他配置

upstream  abc.test.com  {

server   192.168.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;

server   192.168.0.1:8082 weight=1 max_fails=2 fail_timeout=30s;

server   192.168.0.2:8081 weight=1 max_fails=2 fail_timeout=30s;

server   192.168.0.2:8082 weight=1 max_fails=2 fail_timeout=30s;

}

#.....这里省略其他配置

}

2、增加一个server,对应被访问的应用域名,如www.test.com

server{

listen 80;

server_name www.test.com;

charset utf-8;

location / {

proxy_pass http://abc.test.com;

}

}

3、在192.168.0.1和192.168.0.2两台服务器上各安装2个tomcat,端口分别为8081,8082

4、重启Nginx,配置生效 nginx -s reload

5、如上配置后,整个系统可以正常运行,但是我们的程序中往往会有获取用户真实ip的需求,但基于以上配置只能获取到内网地址192.168.0.1和192.168.0.2

要获取真实ip地址,需要将第二步的配置改为:

server{

listen 80;

server_name www.test.com;

charset utf-8;

location / {

proxy_pass http://abc.test.com;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

同时在java应用中这样获取:request.getHeader("x-forwarded-for");

6、这时,如果在系统中调用request.getServerName(),返回的也是内网ip,而不是www.test.com,需要增加如下配置

proxy_set_header Host $host;

注:当nginx和tomcat在一台服务器上的话,这里是可以正确返回的。

时间: 2024-08-29 12:07:34

nginx均衡多tomcat环境配置,及这种环境下的remoteIp及ServerName获取方式的相关文章

LInux环境下Eclipse + Tomcat + MySQL 配置J2EE开发环境的方法

上一篇博文里总结了面向对象三大特性在Java中的体现,现在谈一谈Java中的抽象类,接口,内部类等特性. 一. 抽象类 public abstract class Shape { public int shapeID = 0; public abstract double getArea(); } Java中允许类.接口或成员方法具有抽象属性,而不允许成员域或构造方法具有抽象属性. 类修饰词中含有abstract的类具有抽象属性,称为抽象类:接口总是具有抽象属性. 如果成员方法的修饰词中含有ab

Java开发环境配置 JDK开发环境配置

Java开发环境配置 JDK开发环境配置 Java环境变量涉及到三个名词:JAVA_HOME.PATH.CLASSPATH. JAVA_HOME代表JDK安装主目录,PATH代表JDK下可执行文件目录,CLASSPATH代表运行java程序时需要查找class文件的目录. 依据上面的安装步骤: JAVA_HOME应该设置为:D:\DevelopTools\JAVA\JDK PATH应该设置为:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意其中的分号) CLASSP

Tomcat环境配置部署测试环境及架构

Tomcat环境配置已经在前面介绍过了,这边就为童鞋们介绍下对于Tomcat的架构是怎么样的! Tomcat的架构包含(bin.conf.lib.logs.temp.wenapps.work)等文件夹 下面就来分别介绍下对应的文件是做什么用的(常用的5个) BIN目录:这个目录文件里的主要作用是控制Tomcat的启动与关闭(使用catalina或者startup脚本),以及启动关闭有关的安全管理(uli)的等 常用命令: 启动Tomcat:   ./startup.sh 关闭Tomcat:  

Eclipse Maven profiles 多环境配置,测试环境与开发环境分开打包

1.将开发环境.测试环境.生产环境的配置文件分开存放,如下图: 2.在Maven中配置不同的环境打包配置文件的路径,配置如下: <profiles> <profile> <!-- 开发环境 --> <id>dev</id> <properties> <env>dev</env> </properties> <activation> <!-- 默认激活该profile节点-->

[Java EE] LInux环境下Eclipse + Tomcat + MySQL 配置J2EE开发环境的方法

http://www.colabug.com/thread-1168296-1-1.html 1. 版本信息      (1)CentOS 6.4发行版64位,uname -a 显示如下:              Linux localhost.localdomain 3.11.6 #1 SMP Sat Nov 2 23:25:40 KST 2013 x86_64 x86_64 x86_64 GNU/Linux   (2)Eclipse: Version: Kepler Service Rel

Nginx反向代理Tomcat的配置方法

一.Nginx安装 下载nginx源安装包 http://nginx.org/en/linux_packages.html 找到对应Linux版本的连接,这里选CentOS 6,右击复制链接地址"http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm " 在linux下下载nginx源的rpm包并安装 wget http://nginx.org/packages

pomelo环境配置(windows环境)

目录 简介 准备 安装 工程的创建 简介 1.网易开源,免费,业(diao)界(si)良(fu)心(li)呀,^.^ 2.游戏服务器框架(当然也可以用于web服务器) 3.高性能.高可伸缩.分布式,多进程 4.支持大多数主流平台的客户端,并提供了开发库 5.完整的文档,详细的demo(包含了多数客户端的,如果大家有其他除了官网上面的例子,希望可以分享一下.) 6.中文开发文档 准备 1.node.由于pomelo是基于node的,所以你需要提前的安装node,这里有一个关于安装node的教程,这

机器学习实战之环境配置:windows系统下安装NumPy、SciPy和Matplotlib函数库

在科学和金融领域,SciPy和NumPy等科学函数库都实现了向量和矩阵操作,增加了代码的可读性,降低了阅读门槛:同时这两个库使用底层语言(C和Fortran)编写,提高了相关应用程序的计算性能,被广泛的应用.此外还有绘图工具Matplotlib,可以绘制2D/3D图形,也可以处理科学研究中经常使用到的图形. 三个库各自的下载地址↓ http://sourceforge.net/projects/numpy/files/NumPy http://sourceforge.net/projects/s

Nginx在linux服务器中配置负载均衡upstream详解

这篇文章的前提是已经配置好了NGINX,而且tomcat已经配置好了,而且能能够访问了. 这里介绍一台服务器(192.168.83.130),代理两个本机的tomcat(端口分别为:8080.8081),下面是安装后情况: nginx目录: tomcat目录: 首先在两个tomcat的/conf/server.xml里面分别配置端口如下: 分别重启待用. 然后在nginx的/conf/nginx.conf下设置如下: 设置完成后重启nginx. 浏览器输入主机ip:http://192.168.