frp+nginx内网穿透,反向代理
frp原理
- 服务端运行,监听一个主端口,等待客户端的连接;
- 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
- 服务端fork新的进程监听客户端指定的端口;
- 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
部署frp服务器
打开 frp下载页面,下载最新版的 frp_0.58.1_linux_amd64.tar.gz
,然后上传到服务器。
也可以ssh连接到服务器后用wget下载:
解压安装包
进入解压后的目录:cd frp_0.58.1_linux_amd64
,编辑frps.ini
文件填入下面的内容:
设置frp服务:
新建/usr/lib/systemd/system/frps.service
并填入以下内容
启动frp服务:
防火墙放行端口:
配置frp客户端
还是打开 frp下载页面,下载最新版的客户端
- windows系统:32位系统下载frp_v0.58.1_windows_386.zip,64位系统下载 frp_v0.58.1_windows_amd64.zip,如果不知道系统多少位,请下载32位
解压缩下载的压缩包,进入文件夹内
编辑frpc.ini,按照自己的需求设置转发。下面是一个示例:
配置nginx
server {
listen 80;
server_name 域名;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_read_timeout 240s;
}
}