Nginx的大杂烩

1.什么是Nginx

1.官方解释: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

  1. 简言之:Nginx是高性能的web服务器,但是不能作为servlet容器独立运行,所以通常用来和Tomcat做负载均衡

2.作用 域

  1. 反向代理:代理服务器请求(如:访问youtube(假设能发出请求),但是youtube悄悄地把这个请求交给bilibili来做,那么bilibili就是反向代理)
    正向代理:代理客户请求(如:翻墙软件)
  2. 负载均衡:负载均衡的概念就是当访问量很大的时候,一个 Tomcat 吃不消了,这时候就准备多个 Tomcat,由Nginx按照权重来对请求进行分配,从而缓解单独一个Tomcat受到的压力
  3. 动静分离:Nginx对静态资源的处理要比tomcat强太多。
    一图胜千言
    在这里插入图片描述

3. 举个稀松平常的例子(反衬作用)

在这里插入图片描述

URLFilter ,拦截所有请求,打印当前访问服务器的端口号,以及访问的资源

这就是 没有 负载均衡,没有动静分离,以及没有反向代理的例子。

你看,访问的端口号 全是 8080 ,说明没有负载均衡,只有 端口号为8080的这个tomcat服务器在提供服务。

你看,访问的资源有 png,css,js这些静态资源和jsp,说明 没有动静分离,所有资源都交给了tomcat处理。

你看,访问的资源路径 都是指定了 8080端口号,说明没有Nginx的反向代理,统统交给了8080这个服务器。

非反向代理举例
我直接 通过 127.0.0.1:8080/login.jsp 访问, 因为指定了 8080 端口,就相当于直接去访问了 8080 这个tomcat服务器。
反向代理
我访问 127.0.0.1/login.jsp ,不指定端口号,Nginx接收到这个请求,把请求交给了 8080 这个tomcat服务器(反向代理),同时把请求中的静态资源留下自己处理,只把 jsp请求 交给tomcat(动静分离)。
如果有多个tomcat工作,Nginx可以把请求按照权重分配给不同的tomcat(负载均衡)

4. session共享

Nginx负载均衡减轻服务器压力的同时,会不可避免的带来一个问题,那就是session共享
当同一个用户第一次访问tomcat_8111 并且登录成功, 而第二次访问却被分配到了tomcat_8222, 这里并没有记录他的登陆状态,那么就会呈现未登录状态了,严重伤害了用户体验。
解决办法有两种

1.ip_hash;
2.redis+tomcat-sessoin-manager(本文采用这种)
也就是把 session级别的信息,放到redis 缓存中。记录用户的登录信息。

详情点击 http://how2j.cn/k/nginx/nginx-share-session/1569.html?p=37958

最后图片镇楼,总结

5.演示效果图。

演示结果图

在这里插入图片描述

在这里插入图片描述

怎么配置的呢?

先放个网址,讲的很好。
http://how2j.cn/k/nginx/nginx-tutorial/1565.html?p=37958

上面有 演示用到的 多个tomcat,nginx 以及redis 等工具。
并且有详细的配置步骤。

感兴趣的话,要不大家自己研究研究?

6.照着葫芦画瓢(以下为 云服务器centos7.3 配置负载均衡)

7.安装篇(nginx+redis+tomcat)

  • 操作系统 :CentOS 7.3
  • tomcat 7.0
  • nginx 1.12.2
  • redis 3.2.12
  1. 安装nginx:
1. 查看 yum的信息
 yum info nginx

2.安装
yum -y install nginx

3.查看状态
systemctl status nginx.service

4.启动服务
systemctl start nginx.service -l  (-l 查看详细信息)
5.关闭服务
systemctl stop nginx.service 
6.重启服务
 systemctl restart nginx.service 
7.开启开机自启动

8.关闭开机自启动
systemctl disable nginx.service 
  1. 安装redis
1.设置 仓库
yum install epel-release

2.安装redis
yum install redis

3.查看 redis.conf 安装位置
whereis redis.conf

4.开启redis服务
service redis start

5.关闭redis服务
service redis stop

6.重新启动redis
systemctl restart  redis.service

7.设置开机自启动
chkconfig redisd on


3.tomcat 通过上传安装包解压安装
参考此文章
https://blog.youkuaiyun.com/M_Kerry/article/details/81664548

8. nginx 配置

位置:/etc/nginx/nginx.conf

  1. 在文件头部 修改用户:
    #user nginx;
    修改为
    user root;
  2. 在这里插入图片描述

解释:

  1. / 表示拦截所有请求,全都交给 tomcat.8111.8222 这组服务器(对应 upstream 后面的配置)
    location / {
    proxy_pass http://tomcat.8111.8222;
    }
  2. listen 80   // 表示 监听 80 端口
    
  3. root         //    表示nginx放置 网页的目录
    
  4. location ~.(css|js|png)$ {
    root /usr/local/tomcat9/webapps/ROOT;
    } //表示 css、js和png这些静态资源去 下面的root 目录里找。(处理静态资源比tomcat要高效)

9. redis 配置

  1. 关闭 保护模式(本地 redis 客户端 登录 要用)
    搜索 protected-mode 关键字(配置文件太长,不得不搜索)
    把 yes 换成 no
    protected-mode no
  2. 开启密码登录(设置了密码,tomcat的context.xml里要加上 password这个属性以及属性值)
    搜索 requirepass 关键字
    ①把 requirepass 前面的 # 去掉,②把 foobared 改成你的密码
    requirepass yourpassword

10 .tomcat配置

在每个 tomcat 的 context.xml里加上 redis 的配置

      <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />  
  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  
   host="59.110.238.xxx" 
   password="admin"  
   port="6379"  
   database="0"  
   maxInactiveInterval="60" /> 

在这里插入图片描述
并且加入相应的jar包。(支持 tomcat7, 不支持9,8没试过)
http://how2j.cn/k/nginx/nginx-share-session/1569.html?p=37958
2.配置 server.xml

在这里插入图片描述
查看日志:

tail -300f /usr/local/tomcat799/logs/catalina.out

红色部分 换成你相应的 路径

此命令 能查看 最后三百行的日志,并且能实时打印日志,方便查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值