飞网 Nginx认证连接器Service模式说明
2025年6月3日大约 2 分钟
1. docker 安装飞网 Nginx 认证连接器 - Service 模式
1.1 配置 Nginx
使用 飞网 Nginx 认证连机器的Service 模式的服务,并检查飞网注入的身份信息。编辑 Nginx 配置文件(例如 /etc/nginx/conf.d/service.conf),添加以下内容:
```nginx
# 将多个身份字段组合,用于快速验证身份信息是否齐全(gmzta_name、gmzta_login、gmzta_gmztanet),此内容已默认集成到飞网认证连接器中
map "$http_gmzta_name:$http_gmzta_login:$http_gmzta_gmztanet" $should_proxy {
default 0;
~.+:.+:.+ 1; # 正则匹配非空值,三项都存在才返回 1
}
server {
listen 80;
server_name _;
error_log /var/log/nginx/service-error.log debug;
access_log /var/log/nginx/service-access.log;
# 自定义日志格式,记录飞网注入的身份信息
log_format flynet '$remote_addr - $http_gmzta_user [$time_local] "$request" $status';
access_log /var/log/nginx/service-access.log flynet;
error_page 401 /401.html;
location = /401.html {
root /usr/share/nginx/html;
internal; # 防止外部直接访问
}
location / {
# 身份验证逻辑(基于上面 map 变量)
if ($should_proxy != 1) {
return 401;
}
# 转发到后端服务
proxy_pass http://localhost:3000;
# 再次传递身份信息(可选,用于后端识别),可自定义名称
proxy_set_header X-Webauth-GmztaUser $http_gmzta_user;
proxy_set_header X-Webauth-GmztaName $http_gmzta_name;
}
}
说明:
上述配置检查飞网注入的 gmzta_user 和 gmzta_name 头,确保请求来自授权用户。
使用 proxy_pass 转发到 gmzta service 暴露的端口(例如 localhost:3000)。
1.2 拉取镜像
docker pull registry.cn-beijing.aliyuncs.com/gmzta/gmzta-nginx-connector:latest
2.3 启动容器
通过GM_SERVICE=80 环境变量开启 Service 模式。
此模式下要保证服务不对外暴露。
docker run -d \
--name gmzta-nginx-connector \
--hostname gmzta-nginx-connector \
-e GM_TOKEN=gmzta-authkey-1234567890abcd \
-e GM_CONFIG_DIR=/var/lib/gmzta \
-e GM_TUN=false \
-e GM_SERVICE=80 \
-v $(pwd)/gmzta/conf:/var/lib/gmzta \
-v $(pwd)/default.conf:/etc/nginx/conf.d/default.conf \
--restart unless-stopped \
registry.cn-beijing.aliyuncs.com/gmzta/gmzta-nginx-connector:latest
开启后访问此设备的飞网域名"https://飞网域名"即可。
2 飞网设备直接开启 Service 模式
飞网 Service 模式通过 gmzta service 命令,在飞网网络内安全共享本地服务(如 HTTP/HTTPS 服务器、TCP 服务)。
如:后端应用为3000 端口即可通过gmzta service --bg 3000
直接通过service 模式开启3000端口到443。
注意:此模式要求用户后端应用自行解析飞网注入的身份信息,以验证用户授权。