前言
在后端开发期间,会为前端或者平台上提供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服务的知识,部署简单,实用。
|
请发表评论