nginx

马果老师整理

 

 

 

 

nginx:反向代理服务器

作用:

  1. 反向代理:通过nginx对一台服务器或者多台服务器进行代理
  2. 负载均衡:通过nginx配置服务器集群,可以将一台服务器处理的任务,分散到多台服务器共同处理
  3. 动静分离:将静态资源(图片、html页面)放在nginx服务器上,动态的资源(数据)放在真正的服务器

---------------------------------------------------------------------

正向代理:对客户端进行代理,这种方式,称为:“正向代理”

反向代理:对服务器端的代理,客中方式,称为:“反向代理”

  • 我们使用nginx,主要是使用它的反向代理,通过nginx可以代理一台或者多台服务器
  • 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

负载均衡:通过nginx搭建服务器集群,将原本应该由一台服务器承受的压力,分散到多台服务器共同承受。从而减轻单台服务
的压力

例如:超市1000人排队买单,但只有一个收银窗口,收银员的压力会很大 ,此时,我们可以多开放一些收银窗口,收银员的压力就会变小

============================================================================================
nginx可以在windows或者linux下面使用

使用nginx反向代理tomcat服务器

链接:https://pan.baidu.com/s/1kG0h7BUOamw2nd3-Ww_tnw 
提取码:70af

在windows下面的使用的步骤:

1、解压缩nginx(路径中,一定不要用中文与空格,否则无法启动)

2、启动nginx (它在后台运行,没有界面)

  • 方式1: 双击 nginx.exe 
  • 方式2:在cmd模式下,进入nginx所在目录,执行下列命令  start nginx

停止nginx:

  • 方式1:从任务管理器关闭进程 
  • 方式2:在cmd模式下,进入nginx所在目录,执行下列命令nginx -s stop

3、访问地址是: localhost或者是127.0.0.1或者是本地主机的ip地址

  • 默认端口是:80(这个端口号是浏览器默认端口,不用写)

4、修改nginx/conf目录下的 nginx.conf文件,进行反向代理的配置

            location / {
                root   html;
                index  index.html index.htm;
                proxy_pass   http://127.0.0.1:8080;    
            }

5、重启nginx

  • 在cmd模式下,进入nginx所在目录,执行下列命令  nginx -s reload

6、此时在浏览器,输入 localhost即可访问到它代理的服务器(tomcat)

  • localhost

@@@@@@@@@@@如果希望通过域名访问代理服务器,可以修改一个配置文件

C:\Windows\System32\drivers\etc\hosts文件,增加如下配置即可
          真实的地址   域名
127.0.0.1    www.91.com

@@@:注意:hosts是一个系统文件,在win10中不能直接修改

--------------------------------------------------------------------------------------

通过nginx配置web服务器集群,实现负载均衡 

配置负载均衡的好处:

  • 防止单台服务承受过大压力,请求会在多台服务间轮流处理
  • 配置集群以后,即使某一个服务器挂掉,其他服务器可以继续处理用户请求  (高可用)

步骤:

1、创建一个目录,放置多个tomcat(这些tomcat就是集群中的主机)

2、tomcat1不需要修改,修改tomcat2目录下的conf/server.xml

3、分别启动这两台tomcat服务器:

  • tomcat1----------8080
  • tomcat2----------8081

4、修改nginx/conf/nginx.conf文件,配置集群

upstream d91{
    server 127.0.0.1:8080 weight=5;
    server 127.0.0.1:8081 weight=5;
}

server {
listen       80;
server_name  localhost;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {
	root   html;
	index  index.html index.htm;
	proxy_pass   http://d91;	
}

5、重启nginx

6、创建项目分别发布到2个tomcat中

 

问题:解决windows中配置nginx代理tomcat集群以后session更换的问题

有三种解决方式

解决方案1:配置tomcat集群,session进行共享 (集群共享session)

  • 配置tomcat集群以后,每一个tomcat的session在集群是共享的,多个tomcat中使用的session是同一个session

解决方案2:把数据存放到redis中

解决方案3:绑定ip (ip_hash)

  • 当前客户端发出的第一个请求是由集群中哪一台tomcat进行处理的,服务器记录下客户端的ip地址,当这个ip地址再一次发送请求到服务器,它的请求由同一台tomcat进行处理

注意:以上三种解决方案,在windows一般采用第一种方式(这种方式,也只能在windows中使用,linux系统中无法使用)

在windows中配置session共享的步骤:

1、修改2个tomcat的conf目录下的server.xml

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

@@@@@解开只代码的注释即可

2、分别启动2个tomcat

 3、修改项目代码,在项目中的web.xml文件,配置如下代码:

<distributable/>

-------------------------------------------------------------------------------------------------

在linux系统中配置nginx(整体上与windows配置差不多)

配置步骤:
    
1、下载linux版的nginx

2、将nginx发布到linux下d91目录中

3、解压缩文件到  usr/local/d91目录

  • tar -xvPf nginx-1.8.1.tar.gz -C /usr/local/d91

4、nginx是用c语言编写的,要先安装c语言环境 

  • yum install gcc-c++
  • yum install -y pcre pcre-devel
  • yum install -y zlib zlib-devel 
  • yum install -y openssl openssl-devel

5、进入 /usr/local/d91/nginx-1.8.1 目录,执行下列命令,用于编译nginx

  • ./configure  ------------编译nginx

6、在/usr/local/d91/nginx-1.8.1 目录,执行命令构建nginx

  • make

7、在/usr/local/d91/nginx-1.8.1 目录,执行命令安装nginx

  • make install 

     @@@:如果安装好,在usr/local目录下,会产生一个nginx目录

8、将nginx的80端口在linux防火墙中进行注册

  • firewall-cmd --zone=public --add-port=80/tcp --permanent
  • firewall-cmd --reload

9、进入 /usr/local/nginx/sbin目录,执行

  • ./nginx
  • 关闭nginx   ./nginx -s stop
  • 重启ngigx   ./nginx -s reload

=====================================================================================
在linux系统中,配置代理tomcat单机版与windows完全相同

进入 /usr/local/nginx/conf目录下,修改nginx.conf文件即可(步骤与windows的步骤完全相同)

=====================================================================================
在linux系统中,配置代理tomcat集群版与windows步骤相同,只是不能配置session共享

配置nginx代理服务器:

代理单台tomcat服务器

1、启动tomcat

2、修改/usr/local/nginx/conf/nginx.conf文件

  • vi nginx.conf

@@@添加如下配置:

    location / {
        root   html;
        index  index.html index.htm;
        proxy_pass http://127.0.0.1:8080;
    }

3、重启ningx
    
方式1:关闭nginx进程,再启动

方法2:进入  /usr/local/nginx/sbin目录,执行命令   ./nginx -s stop  然后再启动

方法3:进入  /usr/local/nginx/sbin目录,执行命令   ./nginx -s reload
--------------------------------------------------------------------------------------

代理服务器集群

1、在usr/local/d91/目录下创建目录 tomcats 用于保存多台tomcat服务器 

2、将/d91目录下的tomcat 解压缩到 usr/local/d91/tomcats2中

3、将tomcat名称更名为:tomcat1

4、再复制一份tomcat1,名称为tomcat2

5、更改tomcat2的端口号(5个五位置分别+1)

  • 修改的文件是:  tomcat2/conf/server.xml

6、分别启动这两台tomcat 

  • 进入: tomcat1/bin/  执行  ./startup.sh
  • 进入: tomcat2/bin/  执行  ./startup.sh

即使端口没有在linux防火墙中注册,只要通过nginx代理,依然可以通过nginx正常访问所代理的服务

7、修改  /usr/local/nginx/conf目录下的 nginx.conf文件,配置服务器集群

  • 配置与windows的配置一样

8、重启nginx

  • 进入 usr/local/nginx/sbin,执行  ./nginx -s reload

9、把项目分别发布到 tomcat,tomcat2
-----------------------------------------------------------
此时,请求会在不同的tomcat进行切换,用于减轻单台服务的压力,但是,每切换一次服务器,就是一个新的session,保存在session会丢失

处理方式1:将数据存放到redis

处理方式2:在nginx中设置ip_hash
此代码的含义是:这个ip地址发的第一个请求是由哪一台服务器处理的,它的所有请求,均由这一台服务器进行处理。如果这台服务器出现故障无法访问,将自动切换到其他服务器

ip_hash的设置步骤:

1、修改/usr/local/nginx/conf目录下的 nginx.conf文件

2、添加如下配置:

  • 配置集群信息
        upstream d91{
           server  127.0.0.1:8080 weight=5;
           server  127.0.0.1:8081 weight=5;
           ip_hash;
        }
  • weight=5:权重,它用于指定,集群中,如果有多台服务器,多台服务器处理请求的频率
    location / {
        root   html;
        index  index.html index.htm;
        proxy_pass   http://d91;
    }

3、重启nginx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值