Ⅱ.nginx

作者: 唐騦忆 | 来源:发表于2019-10-31 21:51 被阅读0次

1. 概念

nginx是一个高性能的HTTP与反向代理服务器。它占用内存小,并发能力强,支持5w个并发连接。

2. 反向代理

正向代理:代理客户端,相当于桥梁,客户端通过代理服务器访问服务端,需要对客户端进行配置访问代理服务器。
反向代理:代理服务器,相当于选择开关,反向代理服务器选择服务器拿到数据再返回给客户端,客户端不需要做任何配置

3. 负载均衡

将原本发送到单一服务器的请求发送给nginx,并在多个服务器之间做选择,实现服务器集群的并发。
将请求在服务器之间作平均分配,降低单个服务器的负载。


负载均衡

4.动静分离

tomcat中静态资源:html,css,js
tomcat中动态资源:jsp,servlet
在两台tomcat服务器中分别部署静态与动态资源,通过nginx反向代理做选择。


动静分离

5. nginx配置

cd /usr/local/nginx/sbin/
#开始运行,访问时记得开放防火墙端口
./nginx
#nginx配置
cd /usr/local/nginx/conf/
vim nginx.conf

5.1 全局块

#表示nginx处理的并发数量
worker_process 1;

5.2 events块

#影响nginx服务器与用户的网络连接
#最大连接数
work connection 1024;

5.3 http块

5.3.1http全局块
5.3.2server块
server {
  #nginx暴露给客户端的端口
  listen 80;
  #主机名称
  server_name;

}

6.nginx常用命令

#先进去nginx目录
cd /usr/local/nginx/sbin/

#查看nginx版本号
./nginx -v

#启动nginx
./nginx

#关闭nginx
./nginx -s stop

#重加载nginx
./nginx -s reload

7. 实现反向代理

7.1 安装tomcat(8080)

cd /tomcat/bin/
./startup.sh
#开放端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd -reload
firewall-cmd --list-all
反向代理

7.2 修改nginx.conf

server {
  #nginx暴露端口
  listen 80;
  #暴露ip
  server_name 192.168.17.129;

  location / {
    root html;
    #被代理ip:port
    proxy_pass http://127.0.0.1:8080;
  }
}

server {
  #nginx暴露端口
  listen 80;
  #暴露ip
  server_name 192.168.17.129;

  检测到edu做如下跳转
  location ~ /edu/ {
  proxy_pass http://127.0.0.1:8080;
   }
  检测到vod做如下跳转
  loaction ~ /vod/ {
  proxy_pass http://127.0.0.1:8081;
  }
}

正则表达式
= 相等
~包含
~*包含且不区分大小写

8. 负载均衡

分配策略

  1. 轮询(默认)
    每个请求按时间顺序自动分配,服务器宕机自动剔除。
  2. 权重
    根据权重进行分配
  server 192.168.17.129:8080 weight=5;
  server 192.168.17.129:8081 weight=10;
  1. ip_hash
    让用户指定访问一台服务器
upstream myserver {
  ip_hash;
  server 192.168.17.129:8080;
  server 192.168.17.129:8081;
}

4.fair
根据请求的响应时间进行分配

upstream myserver {
  server 192.168.17.129:8080;
  server 192.168.17.129:8081;
}

简单实现

upstream myserver {
  server 192.168.17.129:8080;
  server 192.168.17.129:8081;
}
server {
  listen 80;
  server_name 192.168.17.129;

  location / {
    root html;
    proxy_pass http://mysrver;
  }
}

9. 动静分离

server {
  #nginx暴露端口
  listen 80;
  #暴露ip
  server_name 192.168.17.129;

  location /image/ {
    #静态文件路径
    root  /data/;
    #列出文件目录
    autoindex on;
  }

 location /www/ {
    #静态文件路径
    root  /data/;
    #列出文件目录
    index.html;
  }
}

10. 高可用

定义:利用主nginx服务器与备份nginx服务器保证后台的高可用性。主服务器宕机会自动切换到备份服务器。


高可用
  1. 在两台服务器上安装nginx
  2. 在两台服务器上安装keepalived
yum install keepalived -y
  1. 修改配置
vi /etc/keepalived/keepalived.conf
#全局配置
smtp_sever 192.168.17.129  #nginx地址
smtp_connect_timeout 30 #nginx超时时间
router_id LVS_DEVELBACK  #是主机hosts配置的地址

#脚本配置
interval 2  #脚本检测时间间隔
weight -20  #脚本条件成立时降低权重

#虚拟ip配置
state MASTER/BACKUP  #主/从
interface ens33  #网卡名
priority 100/90  #主从优先级
virtual_ipaddress {
    192.168.17.50 虚拟ip地址
}

4.启动主从nginx,启动主从keepalived

./nginx
systemctl start keepalived.service

11. nginx 原理

  1. 工作模式


    master-worker
  2. worker


    worker
  3. master-worker好处
    (1)可以进行热部署:nginx -s reload
    (2)每一个worker是一个独立的进程,不用加锁,可以保证服务不会中断。
  4. worker数量设置
    io多路复用(linux中),每个worker进程可以把cpu发挥到极致,worker数量与cpu数量相等时最理想的状态。
  5. worker连接数
    一个请求占用worker的2个连接数(静态资源)或四个连接数(动态资源访问tomcat)。

相关文章

网友评论

      本文标题:Ⅱ.nginx

      本文链接:https://www.haomeiwen.com/subject/opxxbctx.html