问题出在 /web-static/dynaform/class.js 这个脚本上,它做了前端判别,如果 host 不正确就会自动跳转 tplogin.cn,然而这个域名在公网是没有解析的,因此无法访问。

解决方法就是修改这个 js 文件,在其 PageFunc 函数下有一句 this.gDomainDNS=“tplogin.cn”,将变量内容替换为自己的域名就行。

当然我们无法直接修改路由器源码,需要借助 Nginx 改写一下:

server {
    listen 8080;
    server_name demo.site.com; #你的服务器域名

    location / {
        proxy_pass http://192.168.0.1; # 路由器的IP
        subs_filter 'tplogin.cn' 'demo.site.com';
        subs_filter_types *;
    }
}

参考:frp内网穿透,唯独tp-link品牌的路由器无法打开路由管理界面-恩山论坛