应用背景

一般我们在开发时,一个工程里会有多个Web应用,比如一个前台一个后台,那我们就需要配置2个Tomcat服务器,比如一个是http://localhost:8080,一个是http://localhost:8081;但是我想通过域名的形式来访问,并且不带端口,比如www.mall.com和www.oms.com的形式来访问我的前台和后台应用,怎么办?如果不考虑端口,那么只需要在Tomcat的server.xml配置文件里配置一下域名,并且在hosts文件里配置一下映射就OK了,但是看着最不爽的就是端口,所以下面我们来把端口干掉。

说明:文章中涉及到的配置皆为本人开发中实际应用,本文中只做举例说明。

第一步:配置hosts文件

添加如下映射

127.0.0.1 oms.com
127.0.0.1 mall.com
127.0.0.1 www.oms.com
127.0.0.1 www.mall.com

第二步:配置Tomcat

1、mall应用服务器配置(只列出关键配置点)

<!-- 端口配置为8080 -->
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<!-- 默认主机配置为www.mall.com -->
<Engine defaultHost="www.mall.com" name="Catalina">
<!-- 设置主机名为www.mall.com -->
<Host appBase="webapps" autoDeploy="true" name="www.mall.com" unpackWARs="true">
<!-- Context的配置如下,docBase默认,path设置为/ -->
<Context docBase="ec-mall-web" path="/" reloadable="true" source="org.eclipse.jst.jee.server:ec-mall-web"/></Host>

2、oms应用服务器配置

<!-- 端口配置为8081 -->
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443"/>
<!-- 默认主机配置为www.oms.com -->
<Engine defaultHost="www.oms.com" name="Catalina">
<!-- 设置主机名为www.oms.com -->
<Host appBase="webapps" autoDeploy="true" name="www.oms.com" unpackWARs="true">
<!-- Context的配置如下,docBase默认,path设置为/ -->
<Context docBase="ec-oms-web" path="/" reloadable="true" source="org.eclipse.jst.jee.server:ec-oms-web"/></Host>

第三步:配置Nginx

在nginx.conf配置文件中添加如下两个服务器配置

	#配置需要代理的tomcat,可以配置多个服务器,实现负载均衡
upstream mall_proxy{
server www.mall.com:8080;
} #虚拟主机:www.mall.com
server {
listen 80; #监听端口
server_name mall.com www.mall.com; #转发域名,根据该域名规则进行转发,多个用空格隔开
index index.html index.htm index.jsp; #启动页,多个用空格隔开 #网站根目录,这里要按照unix写法,不能这样写E:\Git\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\ec-mall-web(注意正反斜杠)
#必须跟tomcat中<Context docBase="E:\Git\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\ec-mall-web" path="" reloadable="true" source="org.eclipse.jst.jee.server:ec-mall-web"/>
#的docBase路径保持一致
root E:/Git/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/ec-mall-web; #目录自动加“/” ,这个功能一般浏览器自动完成
if (-d $request_filename){
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
} # 动态页面,交给tomcat处理
location / { #设置主机头和客户端真实地址,以便服务器获取客户端真实IP
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_buffering off; #反向代理的地址
proxy_pass http://mall_proxy;
}
}
	upstream oms_proxy{
server www.oms.com:8081;
} #虚拟主机:www.oms.com
server {
listen 80;
server_name oms.com www.oms.com;
index index.html index.htm index.jsp;
root E:/Git/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/ec-oms-web; if (-d $request_filename){
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
} location / { 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_buffering off; proxy_pass http://oms_proxy;
} }

附录:Nginx下载及启动、重启、关闭命令

nginx下载地址:http://nginx.org/en/download.html

下载后解压到D盘(当然也可以是其他盘),比如我是解压到d:\nginx

打开命令窗口,cd到nginx解压目录

>>d:

>>cd nginx

启动nginx

>>start nginx

重启nginx

>>nginx –s reload

停止nginx

>>nginx –s stop

>>nginx –s quit

附录:Nginx参考

springmvc+tomcat+nginx实现单一负载均衡

Nginx+Tomcat多站点访问默认主页问题

Nginx反向代理和负载均衡部署指南

windows下如何安装配置nginx

Nginx反向代理实现Tomcat多个应用80端口访问的更多相关文章

  1. Nginx反向代理实现Tomcat负载均衡

    这篇短文主要介绍Tomcat的集群和用Nginx反向代理实现Tomcat负载均衡. 1.首先需要对一些知识点进行扫盲(对自己进行扫盲,囧): 集群(Cluster) 简单来说就是用N台服务器构成一个松 ...

  2. Nginx反向代理实现Tomcat+Jpress和halo

    一.利用Nginx反向代理Jpress+Tomcat 1.环境准备 服务器 IP地址 作用 系统版本 Proxy代理服务器 10.0.0.101 负载均衡Nginx Web服务器 Ubuntu2004 ...

  3. 使用nginx反向代理到不同服务器(共享同一端口)配置文件

    使用nginx反向代理到不同服务器(共享同一端口)配置文件 https://blog.csdn.net/wang_k_123/article/details/72779443 https://www. ...

  4. nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决

    Nginx反向代理tomcat,很是方便,但是也有些细节的问题需要注意:今天遇到了这样一个问题,tomcat中路径“host/web1”,nginx中直接“host/”代理,这时候session就无法 ...

  5. 【转】Nginx反向代理转发tomcat

    http://blog.csdn.net/mlc1218559742/article/details/53117520 最近刚接触nginx,在网上查阅了相关资料,看到最多的形容nginx的词就是反向 ...

  6. Nginx反向代理到Tomcat服务器

    在实际生产中,Tomcat服务器一般不单独使用在项目中,对于静态资源的响应Nginx表现的比较好,另外由于nginx是专门用于反向代理的服务器,所以很容易实现将java的请求转发到后端交给tomcat ...

  7. nginx反向代理本地 单台wed -使用ip+端口代理

    环境: 本地外网ip:123.58.251.166 .配置index.html网页 [root@host---- conf.d]# cat /web/sing/index.html <h1> ...

  8. Nginx反向代理时tomcat日志获取真实IP

    对于nginx+tomcat这种架构,如果后端tomcat配置保持默认,那么tomcat的访问日志里,记录的就是前端nginx的IP地址,而不是真实的访问IP.因此,需要对nginx.tomcat做如 ...

  9. 腾讯云Centos下Nginx反向代理Apache+Tomcat

    1. 安装Apahce, PHP, MySQL以及php连接mysql库的组件#yum -y install httpd php mysql mysql-server php-mysql     // ...

随机推荐

  1. 各大oj题目分类(转)

    POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006POJ1008POJ1013POJ1 ...

  2. Cloudera CDH 5集群搭建(yum 方式)

    1      集群环境 主节点 master001 ~~ master006 从节点 slave001 ~~ slave064 2      安装CDH5的YUM源 rpm -Uvhhttp://ar ...

  3. opengl微开发之1-从零開始

    对OpenGL有一点了解之后,如今開始真正编写代码. 今天的内容: 使用FreeGLUT创建OpenGL的上下文环境 初始化GLEW 创建一个OpenGL的的模板范例 第一步: 一个OpenGL的上下 ...

  4. 【Swift】 GET&POST请求 网络缓存的简单处理

     GET & POST 的对比 源码:https://github.com/SpongeBob-GitHub/Get-Post.git 1. URL - GET 所有的参数都包含在 URL 中 ...

  5. linux_设置开机自启动程序脚本

    设置开机自启动

  6. [ Swift框架 ] # SwiftyJSON

    Swift写的关于转化JSON数据 https://github.com/SwiftyJSON/SwiftyJSON

  7. 【百度地图API】今日小年大进步,齐头共进贺佳节——API优化升级上线,不再增加内存消耗

    原文:[百度地图API]今日小年大进步,齐头共进贺佳节--API优化升级上线,不再增加内存消耗 任务描述: 今天是2011年01月26日,小年夜.百度地图API在小年夜献给广大API爱好者一份给力的礼 ...

  8. 左右lcm,gcd一些性质

    两个整数a,b  他们的最大公约数为n  最小公倍数为m  则有 a,b都能分解为有限个素数的积               12 = 2^2 * 3^1 * 5^0 , 30 = 2^1 * 3^1 ...

  9. Web API-路由(二)

    路由匹配主要有三个阶段: 1.将URI匹配到一个路由模版: 2.选择一个controller 3.选择一个action: 可以使用系统提供的拓展点,修改默认的匹配与选择逻辑规则.   路由模版: 路由 ...

  10. 关于android中sqllite对时间的操作

    sql 中有时间的类型,date,time,datetime,方便关于记录的维护,下面一个demo演示怎么在每条记录中默认增加时间 源码下载地址 http://www.codes51.com/code ...