frp配合nginx域名穿透本地
frp配合nginx域名穿透本地
http方式的域名穿透:
1. 问题:在某些情况下,比如我在开发微信公众号的时候,需要及时调试,但是用的是golang,而且实际上无论什么语言,就算我加上了自动部署,也会消耗很多时间,包括看日志,debug定位,都会花费很多功夫,于是用内网穿透,调试的时候直接访问本地的程序,岂不美滋滋。
2. 安装frp
(1) mac上面安装客户端 frpc
到 https://github.com/fatedier/frp 查看,会发现 https://github.com/fatedier/frp/releases/ 并没有macos版本,于是看一下源码,有Makefile,很明显了,自己编译,别个还是go写的,那更美滋滋了,git clone 下来直接make,完了之后会发现有个bin目录,里面就有可执行文件frpc。
(2) Linux安装
这个很简单,直接到 https://github.com/fatedier/frp/releases/ 选择对应版本下载之后,解压,开包即用。
(3) Windows安装
同Linux
3. 服务端配置文件
执行vim frps.ini,写入以下内容
[common]
subdomain_host = example.com # 这里是域名,最高一级的
bind_port = 7000 # frps启动运行的端口
vhost_http_port = 7001 # 要转发监听的 端口,这个应该与nginx反向代理的端口一致
token = xxx # 这个token相当于口令密码,客户端要与服务端一直才可成功连接
4. 客户端配置文件
[common]
server_addr = 192.168.0.1 # 服务器地址(请填成你自己的)
server_port = 7000 # 服务器启动的端口
token = xxx
[web]
type = http # 转发协议类型
local_port = 7001 # 本地处理端口,也就是要映射到的端口,所有转发请求都会走这个端口
subdomain = sub # 子域名
locations = / # 配置域名映射过来是根
5.nginx配置
server {
listen 80;
server_name sub.example.com;
location / {
# 以下三句的proxy_set_header 必须加上才可以
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:7001/;
}
}
6.启动服务
首先启动服务器:
frps -c frps.ini
客户端:
frpc -c frpc.ini
nginx:
重启:sudo nginx -s reload
启动:sudo nginx
https方式的域名穿透:
这里说最简单的, 服务器有证书,并且成功访问https域名
1. 服务端配置:
[common]
bind_port = 7000 # frps启动运行的端口
vhost_http_port = 7001 # 要转发监听的 端口,这个应该与nginx反向代理的端口一致
token = xxx # 这个token相当于口令密码,客户端要与服务端一直才可成功连接
2. 客户端配置:
[common]
server_addr = 192.168.0.1 # 服务器地址(请填成你自己的)
server_port = 7000 # 服务器启动的端口
token = xxx
[web]
type = http # 转发协议类型
local_ip = 127.0.0.1
local_port = 7001 # 本地处理端口,也就是要映射到的端口,所有转发请求都会走这个端口
custom_domains = sub.example.com # 自定义域名
3.启动服务
首先启动服务器:
frps -c frps.ini
客户端:
frpc -c frpc.ini
nginx:
重启:sudo nginx -s reload
启动:sudo nginx
现在本地项目跑起来,然后通过域名访问一波,通过,完美。