Nginx

 

Nginx

一:Nginx的定义(什么是Nginx)

Nginx是一个免费开源的高性能的HTTP服务器以及反向代理服务器(Reverse Proxy),可以提供POP3/IMAP/SMATP代理服务,可以快速的响应静态页面。

二:Nginx的优点

  1. 高并发,高性能(2-4万,理论数字是5万)
  2. 轻量级,内存消耗较少
  3. 稳定性高,宕机概率较低
  4. 支持热部署
  5. cpu亲和

三:Nginx使用场景(Nginx的使用场合比较多,我们学习主要是面向JavaWeb在服务器上的部署)

  1. 静态资源服务器
  2. 动态匹配
  3. 反向代理
  4. 负载均衡

四:Nginx的安装部署

liunx系统的配置

准备(依赖环境)

apt-get install build-essential

apt-get install libtool

apt-get update

apt-get install libpcre3 libpcre3-dev

apt-get install zlib1g-dev

apt-get install openssl

 

下载

wget http://nginx.org/download/nginx-1.17.0.tar.gz

解压

tar -zxvf nginx-1.17.0.tar.gz

配置

cd nginx-1.17.0(进入nginx目录,此处建议重命名,转移到一个合适的位置)

./configure --prefix=/usr/local/nginx

编译

//编译

make

//安装

make install

运行

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

//如果想要弄个直接的命令,就写个软链接

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

//开启之后,外部访问这个服务器的IP,就可以看到Nginx的代理页面

关闭

/usr/local/nginx/sbin/nginx -s stop

/usr/local/nginx/sbin/nginx -s quit

pkill -9 nginx(也可以,直接杀掉进程)

  1. 重新加载配置

/usr/local/nginx/sbin/nginx -s reload

 

 

  1. 补充

如果你启动nginx之后,想看看端口占用情况

netstat -nlt | grep 80

window系统的   nginx 开启,重启,关闭
开启    start nginx
关闭    nginx -s stop 
重启    nginx -s reload

反向代理
然后修改nginx.conf,主要是30-42行

location / {
            proxy_pass http://127.0.0.1:8111;
    }
#location / 表示处理所有请求
#proxy_pass http://127.0.0.1:8111; 表示把请求都交给http://127.0.0.1:8111来处理

意义何在

既然直接通过127.0.0.1:8111/login.jsp 可以访问,那么干嘛要通过127.0.0.1/login.jsp 去反向代理到tomcat呢? 为什么不直接使用tomcat呢?

因为nginx在处理静态文件的吞吐量上面比tomcat好很多,通常他们俩配合,不会把所有的请求都如本例所示的交给tomcat, 而是把静态请求交给nginx,动态请求,如jsp, servlet,ssm, struts等请求交给tomcat. 从而达到动静分离的效果。 接下来就会讲解如何进行动静分离

动静分离
在locaction下面添加一个新的location:


  location ~\.(css|js|png)$ {
            root C:/Users/X7TI/Downloads/tomcat_8111/webapps/ROOT;
    }

这表示所有的.css 、.js和 .png访问都由nginx来做,访问的地址是

C:/Users/X7TI/Downloads/tomcat_8111/webapps/ROOT

注:这里要注意,填写本地地址的时候,要用正斜杠 / 不要用反斜杠 \

负载均衡

概念

负载均衡的概念就是当访问量很大的时候,一个 Tomcat 吃不消了,这时候就准备多个 Tomcat,由Nginx按照权重来对请求进行分配,从而缓解单独一个Tomcat受到的压力

均衡策略

轮询:默认的不用再加东西,不是随机,一个挨着一个

热备:有主要处理的机器,还有备胎

权重:在不同机器的处理能力不同的时候

 

修改nginx.conf

1.首先增加一个upstream ,用来指向ip(服务,项目)

2.upstream里面有多个值,就可以出现负载均衡效果。

3.然后修改location,反向代理到上述配置

#首先增加一个upstream ,用来指向这两个tomcat
#轮询

upstream tomcat_8111_8222{

server 127.0.0.1:8111 ;

server 127.0.0.1:8222 ;

}
#然后修改location,反向代理到上述配置。

location / {

proxy_pass http://tomcat_8111_8222;

}


 其他策略怎么写

#权重
#weight表示权重,值越大,被分配到的几率越大
upstream tomcat_8111_8222_qunzhong{

server 127.0.0.1:8111 weight=1;

server 127.0.0.1:8222 weight=2;

}
#热备
upstream tomcat_8111_8222_renbei{

server 127.0.0.1:8111 backup;

server 127.0.0.1:8222 weight=2;

}

问题:负载均衡 session问题

解决办法一: ip_hash

通过ip地址标记用户,如果多次请求都是从同一个ip来的,那么就都分配到同一个tomcat.
这样就不会出现负载均衡 session问题了. 处理手段也很简单,如图所示在upstream最后加上ip_hash;就行了。

例:

upstream tomcat_8111_8222{

server 127.0.0.1:8111 weight=1;

server 127.0.0.1:8222 weight=2;

ip_hash;

}

 

不过这种方案并不完美,当如下几种情况发生时就有问题:
1. 大量请求来之某个局域网,那么相当于就没有负载均衡了
2. 如果tomcat_8111 挂了,那么此时nginx只能把请求交给tomcat_8222,但是这里却没有记录session,用户体验依然受影响。 

解决办法二: redis+tomcat-sessoin-manager

 

你可能感兴趣的:(nginx,中间件,中间件)