Featured image of post openwrt管理后台使用caddy代替uhttpd

openwrt管理后台使用caddy代替uhttpd

openwrt管理后台默认是使用uhttpd提供服务的。一段时间体验下来发现uhttpd有时会没响应,查不到具体原因,只能重启才会恢复正常。为了稳定性和强大的反向代理功能,决定在软路由上使用caddy代替uhttpd。

暂停uhttpd服务

uhttpd服务占用了80端口,需要先暂停。使用ssh登录openwrt,执行下面命令暂停uhttpd服务:

/etc/init.d/uhttpd stop
/etc/init.d/uhttpd disable

下载caddy

访问caddy官网下载最新版本的caddy,intel cpu需要下载Linux amd64版本,额外功能模块选上aksdb/caddy-cgi/v2

下载后放到/usr/bin目录下,并重命名为caddy,并给予执行权限:

wget "https://caddyserver.com/api/download\?os\=linux\&arch\=amd64\&p\=github.com%2Faksdb%2Fcaddy-cgi%2Fv2\&idempotency\=32032912354333" -o  /usr/bin/caddy
chmod +x /usr/bin/caddy

配置caddy

增加下面的配置,并放到/etc/caddy/Caddyfile文件中:

{
  order cgi before respond
}
:80 {
    @notcgi {
        not path /cgi-bin/*
        not path /
    }
    redir / /cgi-bin/luci
    file_server @notcgi {
       	root /www
    }
    cgi /cgi-bin/luci*  /www/cgi-bin/luci {
        script_name /cgi-bin/luci
        # 下面这句很重要,要不然部分服务控制台会工作不正常
        unbuffered_output
    }
}

增加启动脚本

增加自启动脚本,并保存到/etc/init.d/caddy中:

#!/bin/sh /etc/rc.common


START=99

SERVICE_USE_PID=1
SERVICE_WRITE_PID=1
SERVICE_DAEMONIZE=1

start() {
       service_start  /usr/bin/caddy run --config /etc/caddy/Caddyfile
}

stop() {
        service_stop /usr/bin/caddy
}

给予执行权限:

chmod +x /etc/init.d/caddy

运行

执行下面脚本运行caddy服务,并加入到自启动中:

/etc/init.d/caddy enable
/etc/init.d/caddy start

成功启动后,就可以正常访问后台了:)

Built with Hugo
主题 StackJimmy 设计