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 // ...
随机推荐
- 关于微软公有云Azure会计标准
前几年.中国的云计算项目往往搞成了房地产项目.大搞形"象project",没有实质性的内容.云计算老总成了房地产大老板,国内业界是在胡闹! 现今,世纪互联与微软(中国)联手搞公有云 ...
- 通讯录C++console application
#include<iostream> #include<fstream> #include<string> #include<cstring> #inc ...
- 猫学习IOS(十五)UI以前的热的打砖块游戏
猫分享.必须精品 材料代号地址:http://blog.csdn.net/u013357243/article/details/44814523 原文地址:viewmode=contents" ...
- 吞吐量(Throughput)、QPS、并发数、响应时间(RT)对系统性能的影响
首先对吞吐量().QPS.并发数.响应时间(RT)几个概念一直比较模糊,也不知道哪些指标可以较好的衡量系统的性能.今天特意查了些资料做一些记录:首先看一些概念(来自百度百科) 1. 响应时间(RT) ...
- asp.net web api2.0 ajax跨域解决方案
asp.net web api2.0 ajax跨域解决方案 Web Api的优缺点就不说了,直接说怎么跨域,我搜了一下,主要是有两种. 一,ASP.NET Web API支持JSONP,分两种 1, ...
- 探究Java中Map类
Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部 ...
- selenium之多线程启动grid分布式测试框架封装(二)
五.domain类创建 在domain包中创建类:RemoteLanchInfo.java 用来保存启动信息. package com.lingfeng.domain; public class Re ...
- Objective-C系列
我的Objective-C系列文章和坚持写博客的感想 做iOS开发有一段时间了,也有自己上线的App产品,也在坚持着发表技术博客总结自己所学的东西.在写博客的时候虽然博文中不免有错别字,但每句话都 ...
- php生成签名及验证签名
<?php /** * 根据原文生成签名内容 * * @param string $data 原文内容 * * @return string * @author confu */ functio ...
- javascript 控制台输出 图片 console.log 真强大 真佩服你们的创造力
无意中,在百度知道页面发现了这货.居然能输出图片到控制台. 完全颠覆自己的三观,果断查阅其输出方法.后得知,原来如此. 曾经做过的项目中,同事把控制台做成一个网页形式方便远程控制和远程调用.没想到过这 ...