准备
-
二级域名一个(example.com)
-
云服务器一台(假如ip为:server-ip)
-
申请 SSL 证书,并下载为
crt/key
格式证书,例如: http://domain1.example.com -
将申请SSL证书的相关三级域名 A记录 DNS解析指向 server-ip
-
一个
ws
协议的服务 -
云服务器正确配置和安装
nginx
,frps
和docker
(我的环境,具体情况按自己的云服务器安装了什么,nginx
+frps
也可以) -
云服务器需要开放使用的端口
-
客户端正确配置
frpc
内网穿透ws为wss
整体思路:
- 通过编辑
frpc.toml
正常配置一个tcp
协议的 远程代理端口- 使用云服务器的
nginx
配置https
反向代理,目标为frpc.toml
创建的远程端口
具体操作如下
假如内网ws协议端口为 :15674
,需要映射的远程端口为 6001
在 frpc.toml
配置文件添加如下(请确保客户端frpc
可执行程序最新为版本)
-
# 其他初始化配置 # ... # 需要添加的内容 [[proxies]] name = "ws" type = "tcp" localIP = "127.0.0.1" localPort = 15674 remotePort = 6001
运行frpc
./frpc -c frpc.toml
现在,可以通过云服务器的 6001
端口访问本地 15674
端口 ws
服务,即 ws://server-ip:6001
现在使用nginx配置反向代理
将下载好的 crt/key
文件放在正确的路径,如果使用 docker
,则需要进行挂载ssl
证书存放的路径,在 nginx
的配置文件中使用挂载在docker
nginx
里面的路径
配置如下,添加在 nginx.conf
中
-
server { listen 4443 ssl; # 监听的端口任意,如果frps 有配置443端口,则nginx需要配置其他端口 server_name domain1.example.com; ssl_certificate /usr/share/nginx/ssl/cert.crt; # crt 证书 如果使用docker,需使用挂载目录 ssl_certificate_key /usr/share/nginx/ssl/private.key; # key 证书 ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { proxy_pass http://server-ip:6001; # 代理云服务器 6001 端口 proxy_read_timeout 60s; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; # 重要 不可删除 proxy_set_header Connection 'Upgrade'; # 重要 不可删除 } }
重启 nginx
接下来就可以使用 wss 协议访问 ,即 wss://domain1.example.com:4443
我的博客,欢迎前往: https://blog.ivwv.site/