刚才简单说了一下正则怎么去写,然后写这个是为了干什么事,让你有一个最初印象,说一下nginx一个很关键的话题,也很简单,这个问题就是反向代理和upstream负载均衡

这个其实是很简单的,那咱们看这块,Nginx的反向代理用这个proxy和负载均衡upstream,所谓的反向代理其实是很简单的,咱们的request请求,之前是直接访问咱们的tomcat,之前可能直接访问咱们的tomcat服务器,现在不去直接访问他了,怎么去做啊,现在我们是这么去做,我们访问nginx服务器,访问的是nginx服务器,然后在nginx里面配置好了一个代理,就是我这个请求先通过nginx拦截一下,然后利用nginx再给我写到一个位置,这个后端的服务器可能是APACHE,可能是tomcat,都可以,比如咱们就来tomcat,也可以代理到tomcat2,也可以代理到tomcat3,这种多的形式就是负载均衡了,这里可以配置一些权重啊,主备啊,都可以,其实这些配置都是很简单的,那咱们现在就看proxy,反向代理,就相当于我的请求交给nginx,nginx帮我转发给后端的tomcat服务器,然后tomcat响应给nginx服务器,中间倒把手,看看怎么去做,其实这个东西是很easy的,咱们vim conf/nginx.conf,咱们就看上面的70,就是最上面的70这块,对他进行一个简单的配置,你比如说,我这里面其实也会有这个配置,我怕我这个写错了,有一个代理的路径#配置反向代理tomcat服务器:拦截.jsp结尾的请求转向到tomcat#location ~ \.jsp$ {#    proxy_pass http://192.168.1.171:8080;#}    我把这个copy一下,啥也不用管,下面的server就不用管了,咱们不去访问他不就行了,咱们就去关注70的server,监听的是70这个server,这里面是有一个location的,我现在再写一个location,在这儿再写一个location,这里面就写这几句话

你看这儿,这不就是动静分离吗,你只要访问我的域名,当然我这里是localhost,你访问我70端口的时候,请求是不是都进来了请求都进来之后,通过location进行过滤,如果你是一个斜杠/,匹配上了的话,当然这块你可以自己去写正则表达式,访问jpg,js结尾的,图片直接仍得到nginx服务器上,静态的,包括js,css,访问直接走这里就行了,$符号表示什么结尾,开头是^这个,\.,因为.得转义一下,你这个.jsp结尾的请求,你都得给我转到这下面,看见了吗,这个服务器一定是http的位置,然后这个proxy_pass这个配置项,代理的key,proxy_pass是固定的,value是你自己随便来的,我这里是114,那我这里就直接这么去写吧,只要你是.jsp结尾的请求,都给我转向到114的8080,可能他也是一个服务,一回我再解压一个tomcat,你就会发现了,配置就这么简单

当前我这里又tomcat吗,可能就是咱们之前讲solr的时候,我再解压一个吧,cd到software下,然后tar -zxvf tomcat,然后-C /usr/local下面,我刚才去解压了一个tomcat,这就多了一个tomcat了,cd到tomcat的webapps下,这里面你会发现这么几个东西,其实这些我都可以干掉,ROOT其实即使我干掉重启也会生成,所以我干脆就不动他了,我就rm -rf docs/,rm -rf examples/,rm -rf host-manager/,rm -rf manager/,就剩一个ROOT,我cd到ROOT下,ROOT正常TOMCAT启动好以后,访问的就是ROOT下的index.jsp文件

我现在去把我的tomcat去启动一下,/usr/local/apache-tomcat/bin/startup.sh

这样的话我就去访问我的地址了,我的地址就是114,http://192.168.1.114:8080,如果tomcat是正常启动,就会进到小猫的界面,进来了

其实tomcat进来能找到小猫的界面,是因为啥啊,其实你每次删了ROOT,他也会存在的,他访问的都是index.jsp,不信咱们可以看一下

你可以看到jsp下面,他就是你访问的HOME,Documentation,然后Configuration,Example,你可以对照一下

这里边有很多,Home,Documentation,Configuration,Example什么什么,其实你看到的这个界面,默认就进到这里了,其实就是这个意思,这样的话TOMCAT就启动了,访问JSP我是不需要重新启动服务的,我记得我这里有一个小的JSP文件,给他copy过来,直接给他拽到这下面,给他拽到ROOT下面,我直接扔到这下面,就多了一个test.jsp

然后我去vim test.jsp,这是我自己随便写的一个JSP文件,主要是TEST1 PAGE,啥也没写,这个你不用去管,可能是空的,因为我注释掉了,主要是看nginx server ip,然后叫做request.getRemoteAddr(),把当前客户端请求的ip给我得到,然后去打印一下,差不多就是这样的一个小界面

这个界面有了以后,咱们当前的tomcat是启动的,如果我先做直接去敲test.jsp的话

他就直接进来了,直接访问了当前的JSP,这块我注释掉所以没有,这里是我直接访问tomcat的ip,根nginx没有关系呢,我本地的IP是192.168.1.200,这块能看懂吧,无非就是加一个界面,然后我本地区访问一下test,看见本地访问的ip地址,现在有一个问题产生了,如果要是nginx给我做一个代理会是什么情况呢,我浏览器本机的是200,我去访问nginx,nginx当前的服务器在114上,然后他接收了我的request以后呢,给我代理了一下,然后给我转到了一个后台的tomcat服务器上,这个时候你再去调用remote address的时候,说白了其实你后端的tomcat这个请求啊,他接收的remote其实是nginx server,因为你转了一把手,请求真正过来的是114,并不是200,如果我把tomcat放到另外一个节点下,放到115下,相当于115这个节点启动tomcat,get remote address的时候get的是114,而不是真实的这个200,因为我是经过nginx代理的,是nginx转给你的,会有这样的一个问题,咱们可以把这个重建一下,我现在tomcat已经启动了,刚才我是没有依赖任何的nginx,现在我去依赖一下他,vim /usr/local/nginx/conf/nginx.conf,你看到我的请求是这样的,你如果是后缀是以.jsp结尾的,你这个会经过代理,会转到114下的8080,你可以理解为115下的8080,其实都是一样的,因为我现在开启了两个服务,一个是nginx服务,一个是tomcat服务,相当于请求过来先请求nginx,nginx帮我转到tomcat服务,tomcat get remote address,其实是114,并不是我浏览器真正的访问段,其实已经写完了

那我先去把它reload一下,/usr/local/nginx/sbin/nginx -s reload

reload成功了,那咱们来看一下吧,现在我不这么去敲了,这么去敲我是直接去访问tomcat,我不直接访问tomcat,我去直接访问我的70,我的70下的什么啊,test.jsp,为什么我这样来,看见了吗

他访问的还是能走到tomcat,能理解吗,但是IP变了,remote ip是nginx的ip,是不是会有这样的一个问题,就是相当于我的请求会经过200这个主机,我去请求到nginx,nginx一看你是.jsp结尾的,直接给你转到tomcat,tomcat最终呈现了这个界面,但是发现remote的ip变成了nginx,能理解我说的意思吧,你需要自己去定义一个了,你可以用x-forward,或者是用其他的方式都行,一般是可以随便去取一个名字,自己加一个变量,还是比较推荐这么去干的,那在这儿其实都已经写好了,你加一句话就OK,然后在这里做一个什么事啊,一定是在这个里面去做这个事情,我copy,加上这一段话,这样的话就是你去代理之前啊,你先给我去set一个变量,其实这个你可以详细去找一下文档,就不想去解释了,也就是说他这里有一个配置,这个配置其实你可以去官网去看,我这里就不去说太多了,文档我肯定不会讲的特别详细,特别详细就没得边了,这么多组件,现在我们不是讲到proxy吗,你自己可以去看,module,他还有一些压缩的,你要知道去用,他给你呈现的都挺好,就是到底怎么去使用,怎么去配,当然我也会给你去配

所以我在这就不介绍这些参数到底怎么去使用了,服务器上很详细,那你就知道他可以去设置一些参数了,参数固定了proxy_set_header,就是在header里面设置一个真实的内容,然后这个x-real-ip你自己定,叫啥都行,x-real-ip,真实的ip又是什么啊,是叫做$remote_addr,大家想一想,现在你本地就是windows通过浏览器,访问到nginx过来,那对于nginx来讲,谁是remote,我的浏览器,windows,那remote_addr就是192.168.1.200,由于在后端已经转成tomcat了所以我会把真实的x-real-ip放到我这个header里,然后在后端的tomcat里边,我通过getHeader,然后你的x-real-ip,去取得真实的客户端IP,可以这么去干,或者你用他内置的有一个变量,叫做x-forward,这个都行

看你怎么去使用,加上一句话,叫做x-real-ip

现在我们去修改一下tomcat,应该cd到这下面,cd /usr/local/apache-tomcat/webapps/ROOT,vim test.jsp我把这个给他放开,这回就有他了,这个就是一个普通的jsp表达式,request.getHeader('x-real-ip'),nginx请求的时候携带过来一些东西,或者你也可以放到attribute里,你可以通过setAttrite()和getAttrite(),这方式有很多种,你可以去随便选择一种,解决办法有很多很多,这里只是给你提一个思路,我这么去做完了以后,保存

我这么去做完了以后,我去保存,刚才我不知道我reload没有,我再去重新reload一下,就把nginx重新reload一下/usr/local/nginx/sbin/nginx -s reload

然后我再去访问的时候,你会发现了,我已经把真实的client端的192.168.1.200带过来了

这回你就能够找到了,就是可以加一个参数,方式很多种,那这个就是关于反向代理,你会发现了,就是动静分离了,动态的东西是以jsp结尾的,或者这里面你可以加小括号,这个怎么写来的,正则括号(*.jsp$),一个竖线/,比如*.do然后.action,只要匹配其中一个,只要你发现请求是和tomcat有关,直接扔给tomcat就可以了,这种是非常简单的

Nginx_反向代理配置讲解相关推荐

  1. nginx反向代理原理讲解

    一 .概述                  反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果 ...

  2. Nginx http和反向代理配置实例介绍

    Nginx  是一个高性能的 HTTP 和反向代理服务器,本节以实际实例介绍如何实现Nginx 反向代理. 1.  安装Nginx 安装Nginx之前,首先安装相关模块的依赖库: 这里安装Pcre和O ...

  3. Nginx安装/负载均衡/反向代理配置与调优

    [Nginx安装] Linux下直接使用包管理安装 sudo apt-get install nginx 使用whereis命令查看安装位置 whereis nginx #sbin下代表nginx可执 ...

  4. Nginx教程系列四:实现反向代理配置

    文章目录 案例一 安装tomcat 配置Nginx反向代理 测试 案例二 安装第二个tomcat实例 准备测试页面 配置Nginx反向代理 测试 location 指令说明 案例一 预先安装nginx ...

  5. nginx反向代理配置及优化

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liuyu.blog.51cto.com/183345/166381 nginx反 ...

  6. nginx_反向代理

    nginx_反向代理 1 worker_processes 1; 2 3 events { 4 5 worker_connections 1024; 6 7 } 8 9 10 11 http { 12 ...

  7. nginx反向代理配置实例分享

    nginx反向代理配置一例. 配置内容如下: user www www; worker_processes 8; error_log /usr/local/webserver/nginx/logs/n ...

  8. Nginx实现HTTP反向代理配置

    Nginx实现HTTP反向代理配置 无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教 ...

  9. Nginx 反向代理配置

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/qq_39794062/article/ details/118074409 一.准备工作 Linux系统安装Tomcat,使用 ...

最新文章

  1. 基于Eclipse搭建STM32开源开发环境
  2. php 点击选择图片上传,php上传多张图片时,选择图片后即可预览的问题
  3. 【再来一套网站程序】kfguan网整站程序下载
  4. chm 转 html 带索引,chm 的项目文件中包含创建 chm 文件所需的HTML文件信息、目录表文件信息、索引文件信息、窗口属 - 试题答案网问答...
  5. 开源|如何用Soft-NMS实现目标检测并提升准确率
  6. Servlet 请求转发
  7. BAT批处理文件 reg命令详解
  8. macbook边缘磕碰如何修复
  9. 计算机无法通过网络连接打印机共享,共享打印机无法连接,详细教您共享打印机无法连接怎么办...
  10. Android数据库框架Sugar的使用
  11. 【幻化万千戏红尘】qianfengDay04-java基础学习:for语句.while语句,do-while语句
  12. Ubuntu 16.04 下 旋转显示器屏幕 竖屏显示
  13. c# propertyGrid下拉选项
  14. [翻译] YLGIFImage 高效读取GIF图片
  15. Python通过区号和校验位校验身份证号是否合法
  16. 数据库设计(二)——数据库设计原则
  17. 整理!这10款PC端软件,设计师必备!
  18. 在广州找前端开发实习经验分享1
  19. 友推SDK微信分享问题
  20. 【PB】程序中连接数据库

热门文章

  1. usb5-写成usb驱动
  2. 通向架构师的道路(第十二天)之Axis2 Web Service(三)
  3. java解析xml转为Map
  4. 小程序wx:key中的关键字*this
  5. 仓库管理的5S如何在仓库中实施
  6. Usb设备驱动3:root hub守护进程2
  7. 正则表达式格式化字符串
  8. 关于PID的如何修改的FAQ
  9. 对于人工智能的学习有哪些建议?【转】
  10. 使用 ASMCMD 工具管理ASM目录及文件