代码上线后一般会用 nginx 做一层反向代理,这时用户的请求会落到 nginx 上,然后通过 nginx 转发到 Node.js 服务上,这样可以很方便的做负载均衡。
通过 nginx 代理后就不希望用户直接访问到 Node.js 服务了,一种方案时让 Node.js 启动的端口只允许内部访问,外部无法直接访问到。另一种方案是在应用层判断。
ThinkJS 提供禁止端口访问的 Middleware,这样如果不方便直接在机器上配置禁止端口访问的话,就可以使用该 Middleware 来禁止。
修改 hook 配置文件 src/common/config/hook.js
,添加如下的配置:
export default { request_begin: ["prepend", "force_proxy"]}
然后在配置文件 src/common/config/env/producition.js
里配置:
export default { proxy_on: true}
这样只在线上环境开启了禁止端口访问的功能,开发环境不受影响。
Node.js 启动服务时默认监听的端口是 0.0.0.0
,这样服务既可以内网访问,也可以外网访问。可以将 host 设置为 127.0.0.1
限制为内网访问。
可以通过修改配置为 src/common/config/config.js
来完成,如:
export default { host: "127.0.0.1"}
联系客服