1.4.5 注册网关
模块的 app.m 文件实现了网关注册,app.m 文件内容如下,在网关上注册对于request_path的请求,转调到upstream_url上。
<service>
<name>main</name>
<request_path>/main</request_path>
<preserve_host>true</preserve_host>
<strip_request_path>true</strip_request_path>
<upstream_url>http://{{.Env.MAIN_SERVICEADDRESS}}:{{.Env.MAIN_PORT}}/main
</upstream_url>
</service>
节点 | 说明 |
---|---|
name | 模块名 |
request_path | 请求路径 |
preserve_host | 是否保留域名,在网关转调时,使用发送方的域名,这里设置为true,不使用发送方的域名,这里设置为false |
strip_request_path | 是否去掉请求路径,为true,则去掉,为false,则会在请求url后加上request_path,注意request_path后面的内容会加到请求url后面,这里只是控制request_path的第一级是否加到请求url后面 |
通过网关实现转调的案例
某些第三方请求不支持跨域访问,导致前端直接调用会出现跨域安全报错,此时可以通过网关转调的方式解决前端不能调用的问题。
下面以调用 http://www.baidu.com 为例说明如下。
- 在main模块下,建一个目录(例如:baidu)
- 在该目录下,建一个文件app.m
- name节点输入目录名baidu
- request_path节点输入/目录名
- preserve_host节点输入false
- strip_request_path节点输入true
- upstream_url节点输入要调用的请求地址
通过配置app.m,实现了在前端请求 http://域名/baidu,就会转调到 http://www.baidu.com 地址,运行效果如下图所示。