Nginx反向代理实现Tomcat多个应用80端口访问
应用背景
一般我们在开发时,一个工程里会有多个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多个应用80端口访问的更多相关文章
- Nginx反向代理实现Tomcat负载均衡
这篇短文主要介绍Tomcat的集群和用Nginx反向代理实现Tomcat负载均衡. 1.首先需要对一些知识点进行扫盲(对自己进行扫盲,囧): 集群(Cluster) 简单来说就是用N台服务器构成一个松 ...
- Nginx反向代理实现Tomcat+Jpress和halo
一.利用Nginx反向代理Jpress+Tomcat 1.环境准备 服务器 IP地址 作用 系统版本 Proxy代理服务器 10.0.0.101 负载均衡Nginx Web服务器 Ubuntu2004 ...
- 使用nginx反向代理到不同服务器(共享同一端口)配置文件
使用nginx反向代理到不同服务器(共享同一端口)配置文件 https://blog.csdn.net/wang_k_123/article/details/72779443 https://www. ...
- nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决
Nginx反向代理tomcat,很是方便,但是也有些细节的问题需要注意:今天遇到了这样一个问题,tomcat中路径“host/web1”,nginx中直接“host/”代理,这时候session就无法 ...
- 【转】Nginx反向代理转发tomcat
http://blog.csdn.net/mlc1218559742/article/details/53117520 最近刚接触nginx,在网上查阅了相关资料,看到最多的形容nginx的词就是反向 ...
- Nginx反向代理到Tomcat服务器
在实际生产中,Tomcat服务器一般不单独使用在项目中,对于静态资源的响应Nginx表现的比较好,另外由于nginx是专门用于反向代理的服务器,所以很容易实现将java的请求转发到后端交给tomcat ...
- nginx反向代理本地 单台wed -使用ip+端口代理
环境: 本地外网ip:123.58.251.166 .配置index.html网页 [root@host---- conf.d]# cat /web/sing/index.html <h1> ...
- Nginx反向代理时tomcat日志获取真实IP
对于nginx+tomcat这种架构,如果后端tomcat配置保持默认,那么tomcat的访问日志里,记录的就是前端nginx的IP地址,而不是真实的访问IP.因此,需要对nginx.tomcat做如 ...
- 腾讯云Centos下Nginx反向代理Apache+Tomcat
1. 安装Apahce, PHP, MySQL以及php连接mysql库的组件#yum -y install httpd php mysql mysql-server php-mysql // ...
随机推荐
- [Linux]使用Clang实现代码静态分析
1.按下开关Clang sudo apt-get install Clang 2.编写测试程序 memleak.c #include<stdio.h> #include<stdli ...
- NYoj The partial sum problem(简单深搜+优化)
题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=927 代码: #include <stdio.h> #include & ...
- .Net 4.5中的HttpClient试用
.Net 4.5中增加了一个新的System.Net.Http.HttpClient名字空间(在 System.Net.Http.dll 中),用于发送 HTTP 请求和接收 HTTP 响应. 基本操 ...
- oracle_表分区
一. 分区表理论知识 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中.分区完全对应用透明. Orac ...
- ASP.NET 5 Web 项目
在Mac OS X Yosemite 10.10.3 中搭建第一个 ASP.NET 5 Web 项目 终于有时间在 Mac 上安装一下 ASP.NET 5,网上有许多教程,但是多数的时间比较早了,版本 ...
- 私人定制javascript中函数小知识点
函数的定义 首先在javascript中,函数就是对象,程序可以随意操控它们.比如,可以给它们设置属性,甚至调用它们的方法.函数使用function关键字来定义.它既可以用在函数定义表达式,也可以用在 ...
- Linux svnserver存储路径和文件的详细解释
svn有两种存储方式:BDB和FSFS,眼下用的最多的是FSFS方式,这样的方式的话.通常是存储在\db\revs目录下,里面有一堆以版本命名的文件.如:0.1.2.3.4......,那个就是了 比 ...
- LogMaster4Net
使用LogMaster4Net实现应用程序日志的集中管理 日志在软件系统中的重要性我在此也不赘述了,几乎所有程序员每天都会更日志打交道. 那么你是否曾今为这样的一些事情而困扰过: - 远程登录到不同的 ...
- 数据传输对象(DTO)介绍及各类型实体比较
数据传输对象(DTO)介绍及各类型实体比较 本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行 ...
- C#获取远程计算机硬件信息实例(支持linux和windows)
原文:C#获取远程计算机硬件信息实例(支持linux和windows) 网上关于WMI的资料很多,但一直没有比较全的属性介绍.今天通过反射把所有属性都给弄出来了. 关于WMI的代码就不多说了. ...