• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Nginx反向代理+Go服务实践

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

前言
在后端开发期间,会为前端或者平台上提供API服务接口,这时、我们看完今天的文章可以详细了解到Nginx反向代理到后端服务上的过程。

Nginx:
是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。可以做反向代理、正向代理,静态服务器等。

负载均衡算法:
upstrem支持4种负载均衡调度算法:

轮询(weight):每个请求按时间顺序逐一分配到不同的后端服务器上,默认为轮询方式
url_hash:按访问URL的Hash来分配请求
ip_hash:按访问IP的Hash来分配请求,如果用户的ip固定不变,也同时可以解决session的问题
fair:根据页面大小和加载时间智能的分配请求,响应时间短的优先分配
反向代理:
客户端-->代理<-->服务端

举例说明:

比如在北京租房子,我们就好比客户端,我爱我家中介好比代理,实际上我们不一定能看到房主(服务端)

我们在租房子的过程中,知道中介是谁,但是不知道房主是谁。

服务器三台:

server 192.168.0.1
server 192.168.0.2
server 192.168.0.3

webApi服务:
Go语言基于gin框架开发的HTTP服务,服务启动监听10080端口号

/usr/local/brand/bin/webApi --config-dir=/usr/local/webApi/config api

Nginx配置:


# 进程数,一般情况下与CPU个数一致
worker_processes  24;

events {
    use epoll;
    #单个worker process进程的最大并发链接数
    worker_connections  65535;
}

http {
    # 其他配置省略
    include vhosts/api.test.com.conf;
}

api.test.com.conf配置:
server_name为api.test.com,监听80端口,将所有请求转发到http://192.168.0.*:10080下面

cat /usr/local/nginx/conf/vhost/api.test.com.conf

# 配置负载均衡,均衡负责轮询的方式进行负载
upstream api.test.com {
    # server 要代理到的服务器节点,weight是轮询的权重
    server 192.168.0.1:10080 weight=1;
    server 192.168.0.2:10080 weight=1;
    server 192.168.0.3:10080 weight=1;
}

server {
    listen       80;
    server_name  api.test.com;

    access_log  /data/log/nginx/api.test.com.access.log;
    error_log  /data/log/nginx/api.test.com.error.log;

    location / {
        # proxy_pass 要注意如何url以"/"结尾,则表示绝对路径,否则表示相对路径
        proxy_pass http://api.test.com;
    }
}

我们请求后返回:http://api.test.com/d/a?page=1&page_size=20,对应的结果有5条记录,这个时候已经说明请求是成功的。

Nginx访问日志如下:

==> /data/log/nginx/api.test.com.access.log <==
192.168.0.123 - - [22/Apr/2020:22:01:01 +0800] "GET /d/a?page=1&page_size=20 HTTP/1.1" 200 656 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36"

已经成功的访问到了我们的Nginx+Go服务。

总结
本文中实践了Nginx代理到后端Go服务的知识,部署简单,实用。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go操作Redis发布时间:2022-07-10
下一篇:
[GO]单向channel和应用发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap