一、环境配置
CentOS7.9 nginx1.24.0 FRP
主机 | IP |
---|---|
阿里云服务器 | 47.109.136.10 |
内网服务器web1 | 10.0.0.10 |
内网服务器web2 | 10.0.0.11 |
内网服务器web3 | 10.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配置负载均衡策略,默认采用的轮询策略进行转发访问。