记录一次通过代理形式访问公司saas服务接口
一、简介
因为公司客户很多使用微信小程序,微信小程序调用saas的api接口时,需要将小程序所调用的域名都经过验证,而且一个域名只允许验证二十次,所以,需要客户自己通过代理请求saas服务,然后在代理那边配置一个域名,配置小程序域名的验证,这样就能解决域名验证被限制二十次的问题。
我这里使用的代理是nginx和haproxy这两款软件,经过测试80端口都能正常,http的话,暂时没有配置成功,正查找原因。
二、代理配置
1、nginx相关配置
假如请求的接口地址是api.haha.com(支持http和https两种)
server { listen 80;##端口,如果不想基于域名,请使用不同的端口进行负载 server_name api.wawa.com;#如果基于端口进行转发,请根据自己业务需要的域名进行修改此处 location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; proxy_pass https://api.haha.com/;##此处可以写http方式也可以写为https方式请求接口 } }
以上内容,可以写入一个独立配置文件,也可以写到Nginx的配置文件中,但是需要注意,在测试过程中发现,如果此Nginx下有多个域名负载均衡,可能正向代理这个会与其他正向代理混淆,导致不能正确正向代理,推荐不管是直接写入nginx的配置文件nginx.conf,还是通过include方式引用,尽量让这段代码尽量放到靠前的位置,让此段代码能载入比其他server块早一些。
还有一个问题,如果此处配置https的话,经过的是api.wawa.com,如果nginx请求后端的https的话,会不会出现问题,感觉不会出现问题,nginx代理请求了真实的接口地址,而将请求拿到之后再将请求发给客户端。
2、haproxy相关配置
这个只使用了http方式,七层负载
frontend main bind *:80 mode http option httplog option forwardfor acl host_www hdr_reg(host) -i api.wawa.com use_backend apitest if host_www backend apitest mode http balance roundrobin server signtest1 api.haha.com
这种形式也做了测试,请求api.wawa.com接口的时候,能正常的请求各个接口,与使用api.haha.com无差别。
但是不知道为什么配置443端口的时候,无论如何都不能正常访问呢?后续再坐下测试
三、臆想的第三种Cname的方式
好像Cname也能做,不过不知道效果,有空试一下
- 点赞
- 收藏
- 关注作者
评论(0)