正文索引 [隐藏]

前言

一键脚本搭建v2ray上使用了caddy来自动配置TLS、网站伪装和路径分流、占用了443端口和80端口,这样子我的frp就不能直接用了,因为端口有冲突。

虽然v2ray自身可以实现内网穿透,但是我懒得去弄,搞不太懂v2ray的配置文件,所以就想办法继续使用frp,frp我主要用来穿透博客的,所以要用的80端口和443端口,不然外网访问要加端口很麻烦

修改frps的端口

把frp的http端口改成非80端口(我选的81端口),https继续使用443端口

修改caddy配置文件

vi /etc/caddy/Caddyfile
caddy文档
#修改前
yourdomain.com {
    tls [email protected]
    gzip
timeouts none
    proxy / 伪装域名 {
        except /分流路径
    }
    proxy /路径 127.0.0.1:v2ray端口 {
        without /分流路径
        websocket
    }
}
import sites/*

#修改后
https://v2ray.yourdomain.com:8080 {
    tls [email protected]
    gzip
timeouts none
    proxy / 伪装域名 {
        except /分流路径
    }
    proxy /分流路径 127.0.0.1:v2ray端口 {
        without /分流路径
        websocket
    }
}
import sites/*

#主要就是改第一行,指定https协议的端口(我选的8080端口)
#创建一个sites文件夹
mkdir /etc/caddy/sites
#创建frp反代配置文件caddy会自动读取
vi /etc/caddy/sites/frp
http://yourdomain.com {
    gzip
    proxy / 127.0.0.1:81 {
        transparent
    }
}

http://test.yourdomain.com {
    gzip
    proxy / 127.0.0.1:81 {
        transparent
    }
}

#注意要添加transparent,frp才能正确穿透
#因为frp是靠请求的域名来区分服务的,如果不添加transparent的话,frp就无法进行区分
caddy文档中对transparent的说明

这样就ok了,重启caddy

总结

现在caddy的80端口会根据请求的域名信息和路径来判断流量转发到v2ray还是frp,然后frp又根据请求的域名信息来判断是那个服务来进行内网穿透。而caddy的htpps端口修改为了8080,默认的https端口(443)给了frp

注意v2ray客户端也要修改端口为8080

更新

之前是因为caddy反代https不成功才把443端口给了frp,所以有很多弊端。现在把443端口给回了caddy,具体可以看这篇文章之前caddy反代https遇到的问题

参考文章