美文网首页golang
golang项目的nginx反向代理和负载均衡配置

golang项目的nginx反向代理和负载均衡配置

作者: 顶尖少爷 | 来源:发表于2023-12-11 15:52 被阅读0次

使用一个iris框架的简单demo

main.go

package main

import (
    "github.com/kataras/iris/v12"
    "iris-demo/router/api"
)

func main() {
    app := iris.New()
    //路由
    app.Get("/version", func(context iris.Context) {
        app.Logger().Info("请求成功")
        data := make(map[string]interface{})
        data["version"] = "1.1.1"
        data["status"] = http.StatusOK
        context.JSON(data)
    })

    app.Run(iris.Addr(":1213"))
}

nginx配置

upstream web_servers{
    server 127.0.0.1:1213;
    server 127.0.0.1:1511;
}
server {
        listen       8000;
        server_name  iris.app.com;

          access_log  /opt/homebrew/etc/nginx/logs/iris.app.com.log;
          error_log  /opt/homebrew/etc/nginx/logs/iris.app.com.error.log;
    

        location / {
            #proxy_pass                 http://127.0.0.1:1213;
            proxy_pass          http://web_servers; 
        proxy_redirect             off;
            proxy_set_header           Host             $host;
            proxy_set_header           X-Real-IP        $remote_addr;
            proxy_set_header           X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }

再将go项目复制一份然后端口修改为1213

启动两个项目

访问 接口

http://iris.app.com:8000/version

负载均衡的模式

  • 轮询

每个请求按时间顺序逐一分配到不同的后端服务器,也就是说第一次请求分配到第一台服务器上,第二次请求分配到第二台服务器上,如果只有两台服务器,第三次请求继续分配到第一台上,这样循环轮询下去,也就是服务器接收请求的比例是 1:1, 如果后端服务器down掉,能自动剔除。轮询是默认配置,不需要太多的配置。

upstream web_servers {
   server localhost:8081;
   server localhost:8082;
}

  • 热备

假设有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:主服务器突然A挂了,服务器处理请求的顺序:切换到备用服务器B。

upstream web_servers {
      server 127.0.0.1:7878; 
      server 192.168.10.121:3333 backup;  #热备     
    }
  • 权重模式

根据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:A-B-B。

upstream web_servers {
    server localhost:8081 weight=1;
    server localhost:8082 weight=2;
}
  • ip_hash

这样每个ip地址固定访问一个后端服务器,可以解决session的问题

upstream test {
    ip_hash;
    server localhost:8080;
    server localhost:8081;
}
  • fair

按后端服务器的响应时间来分配请求,响应时间短的优先分配。这个配置是为了更快的给用户响应。

upstream backend {
    fair;
    server localhost:8080;
    server localhost:8081;
}

-url_hash

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。在upstream中加入hash语句,hash_method是使用的hash算法

upstream backend {
    hash_method crc32;
    hash $request_uri;
    server localhost:8080;
    server localhost:8081;
}

相关文章

  • nginx

    nginx的配置、虚拟主机、负载均衡和反向代理一nginx的配置、虚拟主机、负载均衡和反向代理二nginx的配置、...

  • Nginx应用场景

    反向代理,负载均衡,动静分离 1.反向代理 修改nginx配置,并重新加载 重新加载nginx配置./nginx ...

  • 2020-03-31 Nginx反向代理与动静分离集群架构应用实

    1. Nginx负载均衡配置实战 1.1 Nginx负载均衡反向代理相关实践 1.1.1 实现为WWW服务代理 (...

  • nginx学习目录

    nginx安装部署和配置管理 nginx日志配置 nginx平滑升级与回滚 nginx反向代理 nginx负载均衡...

  • Nginx配置负载均衡

    说明 Nginx的主要用途就是用来配置反向代理和负载均衡的。反向代理可以参考https://www.jianshu...

  • Kong反向代理UPSTREAM配置

    Kong 配置upstream负载均衡 今天的目标是配置upstream(反向代理),实现nginx的最基础负载均...

  • 玩转nginx

    本文内容包括: nginx配置实例之反向代理; nginx配置实例之动静分离; nginx配置实例之负载均衡; n...

  • Nginx反向代理服务器+负载均衡

    nginx反向代理服务器+负载均衡 用nginx做反向代理和负载均衡非常简单, 支持两个用法 1个proxy, 1...

  • 负载均衡

    Nginx代理中的负载均衡 提到Nginx的反向代理,不得不提的就是Nginx的负载均衡,Nginx支持丰富的负载...

  • 4.常用配置

    反向代理 负载均衡 FastCGI 负载均衡详细配置

网友评论

    本文标题:golang项目的nginx反向代理和负载均衡配置

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