当前位置:   article > 正文

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

nginx和frp动态分配

一、环境配置

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结尾的配置文件

  1. vim /etc/nginx/nginx.conf
  2. # server {
  3. # listen 80;
  4. # listen [::]:80;
  5. # server_name _;
  6. # root /usr/share/nginx/html;
  7. #
  8. # # Load configuration files for the default server block.
  9. # include /etc/nginx/default.d/*.conf;
  10. #
  11. # error_page 404 /404.html;
  12. # location = /404.html {
  13. # }
  14. #
  15. # error_page 500 502 503 504 /50x.html;
  16. # location = /50x.html {
  17. # }
  18. # }
2、创建在nginx目录下创建conf.d目录

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

  1. [root@server nginx]# pwd
  2. /etc/nginx
  3. [root@server nginx]# cd conf.d/
  4. [root@server conf.d]# ls
  5. proxy.conf
  6. [root@server conf.d]# cat proxy.conf
  7. upstream web1 {
  8. server 127.0.0.1:8080;
  9. server 127.0.0.1:8081;
  10. server 127.0.0.1:8082;
  11. }
  12. server {
  13. listen 80;
  14. server_name 47.109.136.120;
  15. location / {
  16. proxy_pass http://web1;
  17. proxy_set_header Host $host;
  18. proxy_set_header X-Real-IP $remote_addr;
  19. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  20. proxy_set_header X-Forwarded-Proto $scheme;
  21. }
  22. }
  23. [root@server conf.d]#

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

3、安装frp服务端

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

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

  1. [root@server ~]# tar xf frp_0.33.0_linux_amd64.tar.gz -C /opt/
  2. [root@server ~]# cd /opt
  3. [root@server opt]# ls
  4. frp_0.33.0_linux_amd64
  5. [root@server opt]# cd frp_0.33.0_linux_amd64/
  6. [root@server frp_0.33.0_linux_amd64]# ls
  7. frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE systemd
  8. [root@server frp_0.33.0_linux_amd64]# rm -rf frpc*
  9. [root@server frp_0.33.0_linux_amd64]# ls
  10. frps frps_full.ini frps.ini LICENSE systemd
  11. [root@server frp_0.33.0_linux_amd64]#

3.2、修改配置文件frps.ini

  1. [root@server frp_0.33.0_linux_amd64]# vim frps.ini
  2. [common]
  3. bind_port = 7000 //frp默认端口,云服务器需要放开的端口,与内网服务器进行通信
  4. dashboard_port = 7500 //frp的web页面登录默认端口,可不写
  5. dashboard_user = admin //frp web页面登录用户
  6. dashboard_pwd = 123456 //登录密码
  7. enable_prometheus = true //配置监控

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

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

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

三、内网服务器配置

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

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

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

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

  1. [root@web02 ~]# cat /etc/nginx/nginx.conf
  2. include /etc/nginx/conf.d/*.conf;
  3. # server {
  4. # listen 80;
  5. # listen [::]:80;
  6. # server_name _;
  7. # root /usr/share/nginx/html;
  8. # # Load configuration files for the default server block.
  9. # include /etc/nginx/default.d/*.conf;
  10. # error_page 404 /404.html;
  11. # location = /404.html {
  12. # }
  13. # error_page 500 502 503 504 /50x.html;
  14. # location = /50x.html {
  15. # }
  16. # }

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

  1. [root@web01 conf.d]# ls
  2. web1.conf
  3. [root@web01 conf.d]# cat web1.conf
  4. server {
  5. listen 80;
  6. server_name 10.0.0.11;
  7. charset utf-8;
  8. access_log /var/log/nginx/accessweb1.log main;
  9. error_log /var/log/nginx/errorweb1.log;
  10. root /usr/share/nginx/html;
  11. location / {
  12. index index.html index.htm;
  13. }
  14. }
  15. [root@web01 conf.d]#

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

2、安装frp客户端

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

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

1.1修改frpc.ini配置文件

  1. [root@web01 frp_0.33.0_linux_amd64]# cat frpc.ini
  2. [common]
  3. server_addr = 47.109.136.10
  4. server_port = 7000
  5. [http2] //名称不能与其他内网服务器配置的重复
  6. type = tcp //所使用的协议
  7. local_ip = 127.0.0.1 //本机IP
  8. local_port = 80 //表示将本机的80端口映射到云服务器的8080端口
  9. remote_port = 8080 //与云服务放开的端口对应

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

四、启动frp

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

执行命令

./frps -c ./frps.ini

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

执行命令

./frpc -c ./frpc.ini

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/690104
推荐阅读
相关标签
  

闽ICP备14008679号