玖叶教程网

前端编程开发入门

基础服务搭建-Nginx(nginx 做成服务)

本文案例仅介绍最常用的负载均衡和反向代理

  • 反向代理
  • 负载均衡

1.下载

进入Nginx网站 http://nginx.org/en/download.html下载最新稳定版

2.创建目录并上传至自己的服务器

# mkdir -p /opt/install/nginx
[root@localhost redis]# ls -l
-rw-r--r--. 1 root root 1061461 9月  25 19:43 nginx-1.20.1.tar.gz

3.安装

# 1.安装类库
# yum -y install gcc-c++ pcre-devel openssl openssl-devel

# 2.解压安装nginx
# cd /opt/install/nginx
# tar zxvf nginx-1.20.1.tar.gz
# cd /opt/install/nginx/nginx-1.20.1/
# ./configure
# make install 

3.启动nginx

#默认配置运行nignx服务
# cd /usr/local/nginx/sbin
# ./nginx

#因为我本地部署的虚拟机IP地址是192.168.3.200 所以打开浏览器输入http://192.168.3.200 进行验证

4.nginx常用命令

# cd /usr/local/nginx/sbin
# 1.启动
# ./nginx

# 2.关闭
# ./nginx -s stop

# 3.刷新配置(修改nginx.conf后刷新可使配置生效)
# ./nginx -s reload

5.nginx 配置案例

5.1 搭建静态资源服务器

# 1.备份原有配置文件
# cd /usr/local/nginx/conf
# cp nginx.conf nginx.conf_back

# 2.准备静态资源包并放入服务器指定目录下(这里模拟创建一个html页面)
# mkdir -p /data/web/
# cd /data/web
# vim my.html;

# 输入如下内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <H1>第一个页面</H1>
</body>
</html>

# 保存退出
# 现在我们在 /data/web/ 下有一个my.html的页面


# 3.配置静态代理
# cd /usr/local/nginx/conf
# vim nginx.conf
# 做如下配置
# 4.刷新nginx配置
# cd /usr/local/nginx/sbin
# ./nginx -s reload
# 查看页面代理情况-注意此时的访问地址是  http://ip/my.html
# 5.修改默认初始页
# cd /usr/local/nginx/conf
# vim nginx.conf
# cd /usr/local/nginx/sbin
# ./nginx -s reload
# 查看页面代理情况-注意此时的访问地址是  http://ip/

5.2 反向代理配置

修改配置文件nginx.conf 如下:

server {  
        listen       80;                                                         
        server_name  localhost;    
        
        location /aaa {
            proxy_pass http://192.168.3.101:8081;
            proxy_set_header Host $host:$server_port;
        }
        
        location /bbb {
            proxy_pass http://192.168.3.102:8082;
            proxy_set_header Host $host:$server_port;
        }
        
        location /ccc {
            proxy_pass http://192.168.3.103:8083;
            proxy_set_header Host $host:$server_port;
        }
}

5.3 负载均衡配置

  • 默认算法
  • ip_hash 算法
  • 权重算法

5.3.1 默认算法配置

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除

upstream servers {
    server 192.168.3.101:8081;
    server 192.168.3.102:8082;
}
server {
  listen       80;                                                         
  server_name  localhost;                                               
  location / {
    proxy_pass http://servers;
    proxy_set_header Host $host:$server_port;
  }
}

5.3.2 ip_hash 算法配置

请求可能分发到任意一个服务器,当我们的程序不是无状态(非JWT认证策略)的时候(采用了session保存数据),这时候会把登录信息保存到了session中,那么跳转到另外一台服务器的时候就会存在会话丢失的情况,而iphash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务

IP_HASH负载均衡策略,可在后端服务进行集群化改造的时候,规避会话共享的问题,是实现老系统集群化改造的快速解决方案

upstream servers {
    ip_hash;
    server 192.168.3.101:8081;
    server 192.168.3.102:8082;
}
server {
  listen       80;                                                         
  server_name  localhost;                                               
  location / {
    proxy_pass http://servers;
    proxy_set_header Host $host:$server_port;
  }
}

5.3.3 权重算法配置

权重算法可以指定轮询几率,访问分配几率和权重配置成正比,常用于后端服务器计算性能不均的情况

upstream servers {
    server 192.168.3.101:8081 weight=3;
    server 192.168.3.102:8082 weight=7;
}
server {
  listen       80;                                                         
  server_name  localhost;                                               
  location / {
    proxy_pass http://servers;
    proxy_set_header Host $host:$server_port;
  }
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言