本次记录的是使用nginx来做一个反向代理来访问tomcat服务器。简单的来说就是使用nginx做为一个中间件,来分发客户端的请求,将这些请求分发到对应的合适的服务器上来完成请求及响应。

第一步:安装及配置tomcat

1.1 下载tomcat

  * 下载地址:https://tomcat.apache.org/download-80.cgi

1.2 将下载的tomcat解压到指定位置并且复制多个:

1.3 修改各个tomcat的配置文件:修改conf/server.xml配置文件中的信息

<?xml version='1.0' encoding='utf-8'?>
<Server port="8105" shutdown="SHUTDOWN"> <!-- 默认为8005,这里我把第一个修改为8105,后面两个分别是8205,8305 -->
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">   <!-- 默认是8080,这里我第一个修改为8181,后面两个分别为8182,8183 -->
<Connector port="8181" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />   <!-- 默认是8009,这里我第一个修改为8109,后面两个分别为8209,8309 -->
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm> <Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host>
</Engine>
</Service>
</Server>

* 修改完server.xml配置文件后还需要修改tomcat的bin目录下的 startup.bat 和 shutdown.bat 

在修改这两个配置文件以前我们需要配置三个环境变量(因为我准备使用三台tomcat,有多少台tomcat服务器就需要配置多少个环境变量)

配置完以后开始修改文件,修改文件非常简单就是将每一个tomcat对应其中的CATALINA_HOME修改为自定义的环境变量即可,下面附上部分文件详情

我们在改的时候最好采用全文替换的方式,这样就不会出现遗漏。好了到此我们的一台服务器多台tomcat安装也就到此结束,最好是结果。

第二步:安装及配置nginx

2.1 下载nginx

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

2.2 将nginx解压到指定的目录

2.3 修改nginx的配置文件( conf / nginx.conf

第三步:测试

做完这些我们就可以在tomcat的webapps目录下创建一个项目,然后放一个静态网页来简单测试下。

最终我们通过外网访问,可以明确的看到,nginx采用的是循环的方式给我们分发请求。不过还需要注意的是,在配置完所有的文件以后需要重新启动一下tomcat和nginx。

***********  到此整个使用nginx做web服务器的反向代理到目前为止已经结束,算是记录一个基本的使用,在这其中还有很多的细节需要注意,当然其中还有动静态分离等等这些都需要去研究学习,只能说编程之路只会越走越远,越学越深,只要不放弃终将取得一定的成就。

使用nginx做反向代理来访问tomcat服务器的更多相关文章

  1. 用nginx做反向代理来访问防外链图片

    用nginx做反向代理来访问防外链图片 女儿的博客从新浪搬到wordpress后,发现原来博客上链接的新浪相册的图片都不能访问了,一年的博客内容,一个个去重新上传图片,修正链接也是个大工程.还是得先想 ...

  2. Nginx做反向代理时访问端口被自动去除

    使用的Nginx版本 : nginx/1.13.10 出现问题的配置文件如下 upstream http-web { server 0.0.0.0:9000; } server { listen 80 ...

  3. 使用nginx做反向代理

    很多同学喜欢用nginx做反向代理访问某些网站,原因大家都懂的,今天老高记录一下如何使用nginx做反向代理以及如何配置和优化nginx的反向代理. 准备工作 首先,你需要一个稳定的国外的便宜的VPS ...

  4. 利用nginx做反向代理解决前端跨域问题

    最近朋友再群里提了一个问题,他们公司给他提供了一个获取数据的接口,在浏览器访问这个接口能获取到json数据,但是放在项目里使用ajax就产生了跨域问题,一般这个需要提供接口的后台方面需要做跨域处理,但 ...

  5. wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败

    继上一篇 asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权 的公司内部项目上线后发现文件上传功能有问题. 上传的文件超过50M以后前端就报错了,没有状态返回,也没有响 ...

  6. nginx做反向代理并防盗链

    nginx做反向代理真的非常简单,只需设置location+proxy_pass即可. 防盗链配置有些复杂,需要注意的地方: 在防盗链的location中需要再设置一下proxy_pass(在这里走了 ...

  7. nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP

    nginx做反向负载均衡,后端服务器获取真实客户端ip   首先,在前端nginx上需要做如下配置: location / proxy_set_hearder host                 ...

  8. 【Nginx】使用Nginx做反向代理时,关于被代理服务器相应的超时设置

    > 参考的优秀文章 Module ngx_http_proxy_module > 设置等待被代理服务器的最大响应时间 使用Nginx做反向代理时,因被代理服务器因业务确实复杂,需时较久,往 ...

  9. Nginx做反向代理总是被系统kill

    公司使用Nginx做反向代理,以前都挺正常的,最近不知怎么回事总是无端被系统kill,而在nginx错误日志中也没有信息输出. 网上查了很多资料,也没什么靠谱的回答,唯一觉得有点关联的就是linux ...

随机推荐

  1. MinGW x64 for Windows安装

    1. 百度搜索MinGW gcc 或直接登录 MinGW gcc官网 http://www.mingw.org/ 2.选择左侧download链接,进入下载页面 3.下载安装包mingw-get-se ...

  2. php 随机生成汉字

    function getChar($num) // $num为生成汉字的数量 { $b = ''; for ($i=0; $i<$num; $i++) { // 使用chr()函数拼接双字节汉字 ...

  3. Do You Know These Plastic Bottle Processing Terms?

    The molding process of a plastic bottle refers to a process of making a final plastic article from a ...

  4. 虚拟机安装CentOS详细操作

    使用VMware安装CentOS 6.4 环境:Windows7 ,VMware Workstation10,CentOS6.4 为什么选择CentOS ? 主流:目前的Linux操作系统主要应用于生 ...

  5. ES6 && ECMAScript2015 新特性

      ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES201 ...

  6. redhat 7.6 VI编辑操作

    模式一: 浏览模式 0 : 光标到行首 $ : 光标到行尾 gg:光标到首行 G:光标到尾行 yy:复制光标所在行 dd:剪切光标所在行,删除行 y11y:复制光标所在行,往下数,一共10行 p:粘贴 ...

  7. Pytorch model saving and loading 模型保存和读取

    It is really useful to save and reload the model and its parameters during or after training in deep ...

  8. 字符串NSString与NSMutableString常用方法

    NSString 1.初始化 NSString *str1 = @"a OC Program"; 2.初始化 NSString *str2 = [[NSString alloc] ...

  9. APNs推送的系统做法

    1. #pragma mark - 远程推送注册获得device Token if (IOS_VERSION >= 10.0) { UNUserNotificationCenter * cent ...

  10. Numpy 广播(Broadcast)

    广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式,对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足a.shape == b ...