之前用frp做内网穿透,把内网的服务器开放到外网。
如果是http服务的话,80端口的做法是使用二级域名xxx做个A记录指一台没有nginx 之类的服务器IP,然后用浏览器打开xxx.example.com就打开了。其他端口是在frpc.ini里指定的,就加个端口号如xxx.example.com:1234就打开了,这种情况用于外网服务器已经有nginx在运行占用了80端口, 这时如果不想用端口号来打开,就要做三级域名解析,同时nginx做反向代理,把这个1234端口代理到80.
其实只要给 nginx 增加一个简单的配置,就可以将某个域名的流量转发给 frp 了,还可以通过泛解析来映射不同的网站。
server {
listen 80;
server_name *.frp.example.com; location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Powered-By;
}
}
上面这段写入/etc/nginx/sites-avaliable/default的最后面,监听*.frp.example.com, 并转发给127.0.0.8081, 接下来只要将frp默认监听 80 端口改成 8081 端口就好了.
#配置 frp 服务端
[common]
bind_addr = 0.0.0.0
bind_port = 7005
vhost_http_port = 8081
token = 123456
max_pool_count = 1
subdomain_host = frp.example.com
[http_80]
type = http
local_ip = 127.0.0.1
local_port = 80
subdomain = xxx # 访问:http://xxx.frp.example.com
如果服务端subdomain_host属性不为空
只需要将 *.{subdomain_host} 解析到 frps 所在服务器IP
之后用户可以通过 subdomain 自行指定自己的 web 服务所需要使用的二级域名
通过 {subdomain}.{subdomain_host} 来访问自己的 web 服务。
**服务器域名解析操作总结: 例如 A记录 *.freefrp 、freefrp 到服务器IP , 客户端subdomain属性才生效