frps.service配置如下
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c ./frps.ini --log_file ./frps.log
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
通过systemd启动frps服务后
想代理tcp 80、443端口,但是一直报错port unavailable,其他tcp端口9000、9001等都能正常被代理。
[control.go:447] [54351724c0c3c4be] new proxy [nginx_80] error: port unavailable
[control.go:447] [54351724c0c3c4be] new proxy [nginx_443] error: port unavailable
然后我手动执行/usr/bin/frps -c ./frps.ini --log_file ./frps.log命令,启动frps,发现80、443端口可以被正常代理了。
原来是systemd搞得鬼,将frps.service中的User=nobody去掉就可以正常启动frps.service了。
解释:
User使用nobody没有权限使用80、443端口资源,将User配置去掉,默认会使用root用户执行就有使用80、443端口的权限了。