Nginx反向代理+Go服务实践

前言

在后端开发期间,会为前端或者平台上提供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.1server 192.168.0.2server 192.168.0.3

WebApi服务

Go语言基于gin框架开发的HTTP服务,服务启动监听10080端口号/usr/local/brand/bin/webApi --config-dir=/usr/local/webApi/config api

Nginx配置

# 进程数,一般情况下与CPU个数一致# 进程数,一般情况下与CPU个数一致worker_processes24;events {use epoll;#单个worker process进程的最大并发链接数worker_connections65535;}http {# 其他配置省略include vhosts/api.test.com.conf;}

api.test.com.conf配置

server_name为api.test.com,监听80端口,将所有请求转发到: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_nameapi.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 ;}}我们请求后返回:/d/a?page=1&page_size=20,对应的结果有5条记录,这个时候已经说明请求是成功的。测试接口隐藏了完整URL。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服务的知识,部署简单,实用。