1.加载wget命令
yum install wget
2.拉取安装包
wget https://nginx.org/download/nginx-1.16.1.tar.gz
3.解压安装包
tar -zxvf nginx-1.16.1.tar.gz
4.执行这个命令自动配置一下
5.编译安装
make
make install
6.查看nginx安装的位置
whereis nginx
7.进入sbin
cd /usr/local/nginx/sbin
8.执行
nginx
8.在Linux系统上访问localhost:8080,看到页面:
标志成功安装了
Nginx是一个高性能的HTTP和反向代理web服务器,Nginx代理的是服务器,Nginx本身也是台服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
单点服务器早已无法承载上万个乃至数十万个用户的持续访问。比如一台Tomcat服务器在理想状态下只能够可以承受住2000个左右的并发量,为了解决这个问题,就需要多台Tomcat服务器来进行负载均衡。
那么,应该如何实现负载均衡?Nginx就是其中的一种解决方案,当用户访问网站时,Nginx拦截到这个访问请求,并将其通过轮询的方式均匀地分配到不同的服务器上。
并且,在Nginx中有一种ip_hash策略,它可以获取到用户的真实IP,计算出hash值来选择服务器,这也是一种优秀的负载均衡方式。 所以,掌握Nginx成为了Web开发学习道路上不可缺少的一部分。
正向代理就是客户端将自己的请求率先发给代理服务器,通过代理服务器将请求转发给服务器,如VPN,为了可以连上国外的网站,客户端需要使用一个可以连接外网的服务器作为代理这就是VPN,并且客户端能够连接上该代理服务器。
反向代理代理服务器端,而正向代理代理客户端,在有多台服务器分布情况下,为了能让客户端访问到的IP地址为同一个网站,需要使用反向代理
Nginx比Zuul功能强大,可以整合lua脚本语言,抗并发性能要好
Zuul适用于为服务器中的过滤和拦截等功能
最好是建议Nginx和Zuul一起合作,nginx实现反向代理,zuul实现微服务网关拦截。
在Nginx的安装目录下有一个conf文件夹,打开其中的nginx.conf文件
反向代理一台服务器
在location参数中添加proxy_pass字段,并填写需要反向代理的服务器地址与端口号:
注意:每一行的配置都需要以封号结尾!!!
反向代理多台服务器
除了不断地添加proxy_pass参数,更好的解决方案是配置upstream服务器组!
在配置文件的http块中添加upstream属性:
进入Nginx安装目录下的sbin文件夹,运行命令nginx,
如果之前已经启动,无需关闭nginx服务,只需要让nginx重新加载配置文件即可,命令:
nginx-s reload
刷新浏览器,如果反向代理成功,那么访问的路径会映射到配置文件中的服务器地址
将来随着用户量增长,肯需要添加新服务器,这时候只需要修改配置文件,使用ngnx-s reload命令即可,无需关闭nginx服务器
nginx-s stop #立即停止,无论是否在工作
nginx-s quit #等待进程完成当前工作后安全退出
Nginx负载均衡方式有如加权轮询(默认)、IP哈希(将用户的ip计算成哈希值)、url哈希等等,这里就以加权轮询作为介绍。加权轮询是通过给服务器添加各自的权重值,Nginx通过权重来进行请求的分配,权重越高接收到的请求数量越多。
上图配置了三台服务器,在加权轮询的模式下,6次不同的请求中,权重为3的服务器将会分配到3次请求,权重为2的服务器会分配到2个请求,权重为1的服务器则会分配到1个请求。负载均衡大大减少了在高并发的环境下服务器宕机的风险!
ip_hash:
加权轮询和普通轮询方式都存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
同样也是在nginx.conf中配置
添加完成后nginx-s reload 刷新一下即可
Nginx的静态处理能力很强,但是动态处理能力不足,因此在企业中常用动静分离奇数。动静分离技术其实是采用代理方式,在server{}端加入待正则匹配的location来指定匹配项针对PHP的动静分离;静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。在Nginx配置中,是通过location配置段配合正则匹配实现静态和动态页面的不同处理方式
cd /usr/local/nginx/sbin/
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件 如果我们修改了配置文件,就需要重新加载。
ps aux|grep nginx 查看nginx进程
总结:ok,我又学会了一点