Linux基于FRP+nginx配置负载均衡,实现公网访问内网web服务器

一、环境配置

CentOS7.9    nginx1.24.0    FRP

主机IP
阿里云服务器47.109.136.10
内网服务器web110.0.0.10
内网服务器web210.0.0.11
内网服务器web310.0.0.12

1、四台主机分别安装nginx(此次代理服务器和http服务器都将使用nginx配置)、代理服务器安装frp服务器端,三台web服务器安装frp客户端

二、代理服务器配置

1、修改配置文件nginx.conf

注释以下内容,也可以不注释,直接在主配置文件修改,就是后期维护麻烦,为了方便管理,还是将内容写到conf.d目录下吧,但需要在配置文件中添加一行

include /etc/nginx/conf.d/*.conf; ,表示在nginx会读取conf.d目录下的所有以.conf结尾的配置文件

vim /etc/nginx/nginx.conf
#    server {
#        listen       80;
#        listen       [::]:80;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#        location = /404.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#        location = /50x.html {
#        }
#    }
2、创建在nginx目录下创建conf.d目录

在conf.d目录下创建proxy.conf文件(名字自定义,后缀以.conf结尾就行)

[root@server nginx]# pwd
/etc/nginx
[root@server nginx]# cd conf.d/
[root@server conf.d]# ls
proxy.conf
[root@server conf.d]# cat proxy.conf

    upstream web1 {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
    }

    server {
                listen 80;
                server_name 47.109.136.120;
                location  / {
                proxy_pass  http://web1;
                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_set_header X-Forwarded-Proto $scheme;
                }
     }

[root@server conf.d]#

保存配置,systemctl reload nginx使配置生效

3、安装frp服务端

安装包https://download.csdn.net/download/qq_46131155/88964259

3.1、下载之后解压,删除客户端相关的内容

[root@server ~]# tar xf frp_0.33.0_linux_amd64.tar.gz -C /opt/
[root@server ~]# cd /opt
[root@server opt]# ls
frp_0.33.0_linux_amd64
[root@server opt]# cd frp_0.33.0_linux_amd64/
[root@server frp_0.33.0_linux_amd64]# ls
frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  systemd
[root@server frp_0.33.0_linux_amd64]# rm -rf frpc*
[root@server frp_0.33.0_linux_amd64]# ls
frps  frps_full.ini  frps.ini  LICENSE  systemd
[root@server frp_0.33.0_linux_amd64]#

3.2、修改配置文件frps.ini

[root@server frp_0.33.0_linux_amd64]# vim frps.ini
[common]
bind_port = 7000        //frp默认端口,云服务器需要放开的端口,与内网服务器进行通信

dashboard_port = 7500        //frp的web页面登录默认端口,可不写
dashboard_user = admin        //frp web页面登录用户
dashboard_pwd = 123456        //登录密码
enable_prometheus = true       //配置监控 

3、由于我用的是阿里云的云服务器,在这里就用的阿里云服务器做示例,登录阿里云服务器管理控制台,点击安全组

选择手动添加,将圈内的端口号放开,其中8080、8081、8082端口可自己定义,但注意端口不能冲突。

配置完成后服务器需要重启,否则配置不生效

三、内网服务器配置

三台内网服务器的nginx配置没有太大区别,只需要改动IP

1、安装nginx
yum install epel-release -y    //安装epel扩展源
yum install nginx -y

1.1、修改配置文件nginx.conf,注释以下内容,也可以不注释,直接在主配置文件修改,就是后期维护麻烦,为了方便管理,还是将内容写到conf.d目录下吧,但需要在配置文件中添加一行

include /etc/nginx/conf.d/*.conf; ,表示在nginx会读取conf.d目录下的所有以.conf结尾的配置文件

[root@web02 ~]# cat /etc/nginx/nginx.conf
    
include /etc/nginx/conf.d/*.conf;

  #  server {
  #      listen       80;
  #      listen       [::]:80;
  #      server_name  _;
  #      root         /usr/share/nginx/html;

  #      # Load configuration files for the default server block.
  #      include /etc/nginx/default.d/*.conf;

  #      error_page 404 /404.html;
  #      location = /404.html {
  #      }

  #      error_page 500 502 503 504 /50x.html;
  #      location = /50x.html {
  #      }
  #  }

1.2、nginx目录下创建conf.d,创建web1.conf输入以下内容

[root@web01 conf.d]# ls
web1.conf
[root@web01 conf.d]# cat web1.conf
   server {
        listen       80;
        server_name  10.0.0.11;
        charset utf-8;
        access_log /var/log/nginx/accessweb1.log main;
        error_log  /var/log/nginx/errorweb1.log;
        root         /usr/share/nginx/html;
        location / {
                index index.html index.htm;
        }
    }

[root@web01 conf.d]#

其余两台都是一样的配置,将上面的server_name  10.0.0.11;改为本机IP就行,(也可以写域名,但需要配置hosts解析。)

2、安装frp客户端

1、下载frp压缩包后并进入该目录

[root@web01 ~]# cd frp_0.33.0_linux_amd64/
[root@web01 frp_0.33.0_linux_amd64]# ls
frpc  frpc_full.ini  frpc.ini  LICENSE  systemd
[root@web01 frp_0.33.0_linux_amd64]#

1.1修改frpc.ini配置文件

[root@web01 frp_0.33.0_linux_amd64]# cat frpc.ini
[common]
server_addr = 47.109.136.10
server_port = 7000

[http2]                       //名称不能与其他内网服务器配置的重复
type = tcp                   //所使用的协议
local_ip = 127.0.0.1        //本机IP
local_port = 80            //表示将本机的80端口映射到云服务器的8080端口
remote_port = 8080        //与云服务放开的端口对应

其他两台一样的配置,只需要修改

四、启动frp

1、云服务器cd到frp安装目录

执行命令

./frps -c ./frps.ini

2、内网服务器cd到frp安装目录

执行命令

./frpc -c ./frpc.ini

3、浏览器访问云服务器ip,请求将会被转发到三台内网web服务器上,从而实现公网访问内网;由于没有给nginx配置负载均衡策略,默认采用的轮询策略进行转发访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_46131155

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值