仅作技术讨论,请勿违反所在地法律或从事非法活动。

思路:通过frp内网穿透来实现,阿里云vps搭建客户端,一台免备案vps搭建服务端(可参考《frp内网穿透小白教程》

方法一

服务端配置文件frps.toml

bindPort = 7000
vhostHTTPPort = 800
vhostHTTPSPort = 4430
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "zhanghao"
webServer.password = "mima"

auth.method="token"
auth.token = "mima"

客户端配置

serverAddr = "your_ip"
#连接到云服务器端口,需要和frps.toml配置文件中端口一致
serverPort = 7000

auth.method = "token"
auth.token = "mima"

#web
[[proxies]]
name = "web"
type = "http"
localPort = 80
customDomains = ["your_domain"]
#web443
[[proxies]]
name = "web443"
type = "https"
customDomains = ["your_domain"]

[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:80"

在阿里云vps搭建网站,以typecho博客为例,在免备案vps只需搭建一个同名网站并申请SSL证书
免备案vps的nginx配置如下(可以直接套用,修改域名等信息)

server {
   listen 80;
    listen 443 ssl;
    listen 443 quic;
    http2 on;
   # 修改为你的域名
   server_name your_domain;
    #CERT-APPLY-CHECK--START
    # 用于SSL证书申请时的文件验证相关配置 -- 请勿删除并保持这段设置在优先级高的位置
    include /www/server/panel/vhost/nginx/well-known/your_domain.conf;
    #CERT-APPLY-CHECK--END
    include /www/server/panel/vhost/nginx/extension/your_domain/*.conf;
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    ssl_certificate    /www/server/panel/vhost/cert/your_domain/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/your_domain/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_tickets on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    add_header Alt-Svc 'quic=":443"; h3=":443"; h3-29=":443"; h3-27=":443";h3-25=":443"; h3-T050=":443"; h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"; h3-Q046=":443"; h3-Q043=":443"';
    error_page 497  https://$host$request_uri;
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    location / {
      proxy_set_header   X-Real-IP        $remote_addr;
      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
      proxy_set_header   Host             $http_host;
      proxy_set_header   Upgrade          $http_upgrade;
      proxy_set_header   X-NginX-Proxy    true;
      proxy_set_header   Connection "upgrade";
      proxy_http_version 1.1;
      proxy_pass         http://localhost:800;
    }
    access_log  /www/wwwlogs/your_domain.log;
    error_log  /www/wwwlogs/your_domain.error.log;
}

最后访问your_domain就可以愉快的玩耍了

发现了几个问题,访问https://your_domain时加载不正常,有几个解决办法
1.修改 Typecho 配置(推荐)
在阿里云服务器上的 Typecho 根目录,编辑 config.inc.php,添加以下代码,强制全站生成 HTTPS 链接:

/** 开启 HTTPS */
define('__TYPECHO_SECURE__', true);

清空浏览器缓存后刷新即可。
2.修改国外 VPS 的 Nginx 配置
在国外 VPS 的 Nginx 配置中添加 Header,强制升级不安全请求(但这不如直接改源码彻底):

# 在 server 块内添加
add_header Content-Security-Policy "upgrade-insecure-requests";

其实阿里云服务器完全不需要配置 HTTPS 证书,只需要用方法1让 Typecho 程序“知道”自己正在被 HTTPS 访问即可。

方法二

首先,将无需备案的服务器ip解析绑定至域名【frp服务端】
在阿里云服务器搭建网站,其中 frpc关键配置如下

# ============== Cloudflare方案(新站点)==============
#去掉了 [proxies.plugin] 那一段(HTTP 不需要 https2http 插件)
[[proxies]]
name = "test-web"
type = "http"                    # 只处理http(因为 Cloudflare 到 VPS 走 HTTP)
localPort = 10000                 # 对应你 Nginx 监听的端口
customDomains = ["your_domain"]  #直接cloudflare配置回源,端口写800

此时在cloudflare中,在DNS记录中修改代理状态为已代理(橙色云朵点亮),这里的SSL/TLS 加密模式 为灵活
配置规则——选择Origin Rules
如果传入请求匹配…自定义筛选表达式

字段运算符
主机名等于your_domain

目标端口重写到10000
保存之后刷新网页,就可以访问liao~

PS.还尝试过不用frp,直接解析阿里云的ip到域名,在 Nginx 监听的端口为10000,Origin Rules目标端口重写到10000,但会跳备案验证,一直没找到解决办法,于是弃用……

CloudCone Affiliate
最后修改:2026 年 06 月 22 日
如果觉得我的文章对你有用,请随意赞赏