frp内网穿透之(反向代理nginx)

通过公网 https 连接访问内网(局域网)本地http服务如下:

1.准备工作

​ 想要实现内网穿透功能首先我们需要准备:

  • 一台公网服务器(用作frps的服务端)
  • 一台需要做转发的内网服务器(用作frpc的客户端)

3、frp服务端安装及配置

3.1 下载frp服务端

注意frp服务端是安装在公网服务器上的!!!

​ 服务端下载地址:Releases · fatedier/frp · GitHub

​ 可以看到有很多版本,我的外网服务器是Linux的,可以输入命令查看服务器架构版本:

arch

​ x86_64 直接下载.我下载的是frp_0.56.0_linux_amd64.tar.gz 后缀为 amd64 这个版本。可以手动下载到本地,然后通过scp命令传到服务器,也可以直接在外网服务器上下载。

下载完成后解压,输入命令:

tar -zxvf frp_0.56.0_linux_amd64.tar.gz

​ 解压完成后cd进入目录:

cd frp_0.56.0_windows_amd64

​ 其中作为服务端,我们只需要关注 frps 和 frps.toml 文件。

3.2 frps配置

​ 其中 frps.toml 文件就是我们服务端的配置文件,我们需要根据自己情况稍作修改。输入命令:

vim frps.toml

编辑配置如下:

bash 复制代码
bindPort = 8848
webServer.port = 8088
webServer.addr = "0.0.0.0"
webServer.user = "admin"
webServer.password = "admin"

其中:

  • bindPort:客户端和服务端连接的端口,在配置客户端的时候要用到。
  • webServer.port:服务端可视化界面的端口,若使用7501端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7501。
  • webServer.addr:本地访问地址
  • webServer.user:打开服务端可视化界面的用户名,可自行设置。
  • **webServer.password:**打开服务端可视化界面的密码,可自行设置。
  • token:用于客户端和服务端连接的口令,可以自行设置,不用和我保持一样。

​ 注意:配置项并未介绍完,详情请参见官方文档。

3.3 frps启动

​ 输入启动命令,启动frp服务端:

bash 复制代码
# 方式一:正常启动
./frps -c ./frps.toml

# 方式二:后台挂起启动
nohup /frp/frp_0.56.0_linux_amd64/frps -c /frp/frp_0.56.0_linux_amd64/frps.toml > /frp/frp_0.56.0_linux_amd64/frps.log 2>&1 &        

如果没有报错,代表启动成功!如果无法访问 8088 服务端可视化界面,请检查防火墙是否开放所有所需端口。云服务器,配置规则记得也要开放

输入配置的账号密码,点击登录,进入仪表盘:

​ 此时frp的服务端我们就配置完毕了,接下来开始配置客户端。

4、frpc客户端配置及启动

(本人使用的是本地虚拟机。如果你使用的是windows系统,配置和启动方法一样。)

4.1 把服务端下载的 frp_0.56.0_linux_amd64.tar.gz 文件向虚拟机 Linux 中复制一份过来后,进行解压如下:

4.2 接下来我们来修改客户端 frpc.toml 配置文件

bash 复制代码
serverPort = 8848
serverAddr = "你的服务端IP 110.50.114.150"

[[proxies]]
name = "web"
type = "tcp"
localIP = "192.168.110.25"
localPort = 8201
remotePort = 8888
  • serverPort:与远程绑定的端口相同
  • serverAddr:公网服务器 IP 访问地址
  • name:代理名称(随便填)
  • type: 代理类型
  • localIP:代理地址, 要转发到哪个地址(本地服务地址)
  • localPort:代理端口, 要转发到哪个端口(本地服务端口)
  • remotePort : 远程代理到公网的端口,服务端与客户端连接的桥梁 (此端口记得进行端口开放,避免连接不上)

输入启动命令,启动frp客户端 ,如下:

bash 复制代码
# 方式一
./frpc -c ./frpc.toml

# 方式二
nohup /guorui/frp/frp_0.56.0_linux_amd64/frpc -c /guorui/frp/frp_0.56.0_linux_amd64/frpc.toml > /guorui/frp/frp_0.56.0_linux_amd64/frpc.log 2>&1 &

# 如果是你是windows,进入文件所在目录进行启动。 启动方式如下:
frpc -c frpc.toml

​ 如控制台未报错,代表启动成功,默认80端口!

5. 使用Nginx 配置https协议的域名

5.1 具体阿里云域名购买和配置请参考我以前的文章,有讲解。自行翻阅,本文不讲,直接上代码!

bash 复制代码
 # nginx https 服务配置	
    server {
		listen 80;
		server_name yourdomain.com; #需要将yourdomain替换成证书绑定的域名。
		rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
		location / {
			index index.html index.htm;
		}
	}
    server {
		listen 443 ssl;
		server_name yourdomain.com; #需要将yourdomain替换成证书绑定的域名。
		root html;
		index index.html index.htm;
		ssl_certificate cert/yourdomain.com.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
		ssl_certificate_key cert/yourdomain.com.key; #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
		ssl_session_timeout 5m;
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		#表示使用的加密套件的类型。
		ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
		ssl_prefer_server_ciphers on;
		location / {
			proxy_pass http://ip:8888;    # 上一步访问的地址(也就是客户端配置的远程访问地址)
		}
	}

5.2 访问成功结果如下:

访问nginx配置的域名地址:https://yourdomain.com/xxx/xxx/myMethod

相关推荐
爱吃烤鸡翅的酸菜鱼1 小时前
Java【网络原理】(3)网络编程续
java·运维·服务器·网络
daizikui1 小时前
LVS+Nginx接入层架构图
服务器·nginx·lvs
QuiteCoder7 小时前
【Linux】软硬连接与动静态库
linux·运维·服务器
꧁༺朝花夕逝༻꧂7 小时前
Linux基础--用户管理
linux·运维
Narutolxy8 小时前
Ubuntu 下 Docker 企业级运维指南:核心命令与最佳实践深度解析20250309
运维·ubuntu·docker
deming_su8 小时前
第八课:性能优化与高并发处理方案
nginx·性能优化·node.js
明明跟你说过8 小时前
在【k8s】中部署Jenkins的实践指南
运维·ci/cd·云原生·容器·kubernetes·jenkins
沉默的八哥9 小时前
RBAC的工作原理,以及如何限制特定用户访问
运维·kubernetes
Java_young9 小时前
(十七) Nginx解析:架构设计、负载均衡实战与常见面试问题
nginx·面试·负载均衡
琪琪花10 小时前
sshfs 将远程服务器上的文件系统挂载到本地目录
linux·运维·服务器