为内网一些『裸奔』管理页面加上一些基本的安全认证
# quick start, default proxy port is 3000
$ PROXY_TARGET_HOST=192.168.123.201 PROXY_TARGET_PORT=10086 PROXY_NAME=jkr3 PROXY_PASS=123 node .
# enable Two factor auth and specify proxy port
$ PROXY_TARGET_HOST=192.168.123.201 PROXY_TARGET_PORT=10086 PROXY_NAME=jkr3 PROXY_PASS=123 PROXY_PORT=3003 PROXY_ENABLE_2FA=true node .
# docker
$ docker run -d \
-e PROXY_TARGET_HOST=192.168.123.100 \
-e PROXY_TARGET_PORT=8080 \
-e PROXY_NAME=abc \
-e PROXY_PASS=123 \
-e PROXY_PORT=3000 \
-e PROXY_ENABLE_2FA=true \
-p 3000:3000 \
somax/auth-proxy
PROXY_TARGET_HOST代理目标服务 IP 地址或域名PROXY_TARGET_PORT代理目标服务 端口号PROXY_NAME管理员用户名PROXY_PASS管理员密码PROXY_PORT代理服务器端口号,默认3000PROXY_ENABLE_2FA是否开启两步验证true/false,默认不开启PROXY_SECRET_FILE两步验证密文证书文件,支持在 rancher 中使用 secret (密文)方式提供,默认当前目录下.secret文件PROXY_DEBUG打印 debug 信息,true/false,默认false
访问代理服务地址 -> 输入用户名及密码 -> (正确)-> 请求【目标网站】-> 返回内容
v
(错误) -> 重新输入/取消
# 设置 2FA 账户
访问 `/_auth_proxy_otp` -> 输入用户名及密码 -> (正确) -> 显示二维码 -> 手机 2FA 客户端 扫描添加账户
v
(错误) -> 重新输入/取消
# 用 2FA 密码登录
访问代理服务地址 -> 输入用户名及 2FA 密码 -> (正确)-> 请求【目标网站】-> 返回内容
v
(错误) -> 重新输入/取消
访问 `/_auth_proxy_logout` -> 提示输入用户名及密码 -> 选取消即可(清除密码缓存)
注意:两步验证证书在首次运行会自动生成,如需更换,手动删除证书(默认是
.secret) 文件后重启服务
- 目前不支持 https 代理
- 被代理页面内有其他引用,包括不同端口,这些部分不会被代理
- 代理目标服务本身就有 Basic auth 认证的,会冲突
- 被代理页面内的连接包含域名的情况,在点击这些链接时会转到原连接
- 被代理网页中使用 fatch() 获得数据的情况,如果没有带上
{credentials: "same-origin"}参数,会导致请求认证失败无法获得数据