Frp内网穿透+Nginx反向代理流程

Frp内网穿透+Nginx反向代理流程

项目地址:https://github.com/fatedier/frp
项目文档:https://gofrp.org/zh-cn/docs/

Frp 是一个用 Go 语言开发的高性能反向代理工具,专注于内网穿透,支持 TCP、UDP、HTTP 和 HTTPS 等协议。它能帮助用户在没有公网 IP 的情况下暴露内网服务,实现远程访问和端口复用。

FRP的应用场景:

  • 在无公网 IP 环境下提供 Web 服务。

  • 远程访问家庭或公司内网服务器。

  • 通过单一服务端端口暴露多个服务,实现端口复用。

FRP部署流程:

前提条件

  • 一台具有固定公网 IP 的 Linux 云主机,并暴露指定端口。
  • 域名配置:
    • 主域名(如 frp.test.com)解析至公网 IP。
    • 泛域名(如 *.frp.test.com)解析至公网 IP,支持多个子域名服务。

FRP的配置

  1. 下载并安装 Frp 服务端(frps)和客户端(frpc):

    wget https://github.com/fatedier/frp/releases/download/v0.34.2/frp_0.34.2_linux_amd64.tar.gz
    tar -zxvf frp_0.34.2_linux_amd64.tar.gz
    mv frp_0.34.2_linux_amd64/frps /usr/local/frp  # 可自定义目录
    
    • frpc 复制到内网机器。

    • frps 复制到公网机器。

  2. 配置服务端(/usr/local/frp/frps.toml):

# FRP监听的端口
bindPort = 7000
# 身份认证配置
auth.method = "token"
auth.token = "abcdefghjkl"
# HTTP 服务监听端口
vhostHTTPPort = 80
# HTTPS 服务监听端口
vhostHTTPSPort = 443
# 子域名支持(可选,如果你想用 subdomain 参数)
subDomainHost = "frp.yourdomain.com"
# Web 管理后台配置
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "123456789"
# 启用 Prometheus 监控
enablePrometheus = true
# 日志配置
log.to = "/var/log/frps.log"
log.level = "info"
log.maxDays = 3
  1. 配置客户端(/usr/local/frp/frpc.toml):
#/usr/local/frp/frpc.toml客户端配置文件
# 服务端地址和端口
serverAddr = "111.231.70.217"
serverPort = 7000
# 启用 TLS 加密传输
transport.tls.enable = true
# 身份认证配置(必须与服务端一致)
auth.method = "token"
auth.token = "abc1234esds567s8d9efsa"
# SSH 服务代理配置
[[proxies]]
name = "ssh_nextcloud"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
# Web 服务代理配置
[[proxies]]
name = "web_nextcloud"
type = "http"
localIP = "127.0.0.1"
localPort = 80
remotePort = 80  # 公网访问端口
customDomains = ["111.231.70.217"] # 使用域名时默认使用Server端的HTTP服务监听端口

使用 Systemd 启动 Frp

在 Linux 系统下,利用 Systemd 管理 frps 服务:

  1. 安装 systemd

    # 使用 yum 安装 systemd(CentOS/RHEL)
    yum install systemd
    
    # 使用 apt 安装 systemd(Debian/Ubuntu)
    apt install systemd
    
  2. 创建 /etc/systemd/system/frps.service

    [Unit]
    # 服务名称,可自定义
    Description = frp server
    After = network.target syslog.target
    Wants = network.target
    [Service]
    Type = simple
    # 启动frps的命令,需修改为您的frps的安装路径
    ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.toml
    [Install]
    WantedBy = multi-user.target
    
  3. 管理命令:

    sudo systemctl start frps    # 启动
    sudo systemctl stop frps     # 停止
    sudo systemctl restart frps  # 重启
    sudo systemctl status frps   # 查看状态
    sudo systemctl enable frps   # 开机自启
    
  4. 设置 frps 开机自启动

    sudo systemctl enable frps
    

Nginx反向代理:

项目地址:https://github.com/nginx/nginx
项目文档:https://nginx.org/en/docs/index.html

Nginx 是一个高性能的 Web 服务器和反向代理工具,常用于负载均衡和静态文件服务。

Nginx的安装

  • 推荐使用包管理器:

    #Ubuntu/Debian
    sudo apt update
    sudo apt install nginx
    #CentOS/RHEL
    sudo yum install epel-release
    sudo yum install nginx
    
  • 源码编译(可选):

    wget http://nginx.org/download/nginx-1.24.0.tar.gz
    tar -zxvf nginx-1.24.0.tar.gz
    cd nginx-1.24.0
    sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module
    make
    sudo make install
    

配置Nginx

编写配置文件位于 /etc/nginx/conf.d/server.conf(或源码安装的/usr/local/nginx/conf/nginx.conf):

server {
    listen 80; # Nginx监听端口
    server_name  localhost; # 可更换成127.0.0.1
    # 防火墙配置信息
    #allow 192.168.110.39;
    #deny all;
    
	# 访问localhost:80/pga/映射到192.168.110.50:81服务器
    location /pga/ {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_pass http://192.168.110.50:81;
    }
    # 访问localhost:80/api/映射到192.168.110.50:82/api 后端配置
    location /api/ {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_pass http://192.168.110.50:82/api/;
    }
    # 访问localhost:80/p53/,nginx转发前端静态文件
    location /p53/ {
        root   /home/dell/software/p53/;
        index  index.html;
    }
}

前端路由配置示例(Vue 或类似框架):

server: {
  proxy: {
    '/api': {
      target: '111.231.70.217:82',  // Frp 穿透后的后端地址
    }
  }
}

测试配置:

sudo nginx -t       # 测试
sudo nginx -s reload  # 重载

使用 Systemd 启动 Nginx

同样可以使用systemctl进行管理Nginx的启动

sudo systemctl start nginx    # 启动
sudo systemctl enable nginx   # 开机自启
sudo systemctl status nginx   # 查看状态

引用参考:
内网穿透之frp详解
Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值