Frp结合Nginx配置使用子域名进行访问内网主机资源【测试成功】
一、需求背景
在该项目中,我们需要通过域名来访问公司内网服务器上通过Nginx部署的系统资源。系统架构如下:
- 1台阿里云公网服务器
- 1台公司内网服务器
目标是通过阿里云服务器的子域名访问内网服务器上部署的服务。
二、Frps服务端配置(阿里云服务器)
首先,在阿里云服务器上配置Frps服务端。
编辑 frps.ini
文件:
[common]
bind_port = 7000
vhost_http_port = 7000
subdomain_host = xxx.com
配置说明:
bind_port
:Frps 服务监听的端口。vhost_http_port
:虚拟主机的HTTP端口。subdomain_host
:配置允许使用子域名访问,xxx.com
为你的主域名。
三、Nginx配置(阿里云服务器)
接着,在阿里云服务器上配置Nginx,将域名请求转发到Frp服务。
编辑 demo.conf
文件:
server {
listen 80;
server_name eam-demo.xxx.com;
location / {
proxy_pass http://localhost:7000;
proxy_set_header Host $host;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
配置说明:
listen 80;
:监听在80端口,接收来自客户端的HTTP请求。server_name eam-demo.xxx.com;
:指定虚拟主机的域名为eam-demo.xxx.com
。location /
:将根路径的请求代理到本地的http://localhost:7000
,即Frps服务所在端口。proxy_pass
和proxy_set_header
:设置请求转发,并保持正确的Host头。- 错误页面配置:定义了在发生500、502、503或504错误时,返回自定义的错误页面。
四、Frpc客户端配置(公司内网服务器)
在公司内网服务器上配置Frpc客户端,将本地服务暴露出去。
编辑 frpc.ini
文件:
[web_eam-demo]
type = http
local_ip = 127.0.0.1
local_port = 9001
subdomain = eam-demo
[test_eam-demo]
type = http
local_ip = 127.0.0.1
local_port = 9001
subdomain = test
配置说明:
type = http
:表示这是一个HTTP代理。local_ip = 127.0.0.1
:指向本地服务的IP地址。local_port = 9001
:指向本地服务的端口号。subdomain
:定义了通过何种子域名访问,eam-demo
和test
分别对应eam-demo.xxx.com
和test.xxx.com
。
五、总结
通过上述配置,我们成功实现了通过 test.xxx.com
访问公司内网服务器上的服务,无需显式地指定端口号。这种方案特别适合需要将内网服务通过公共网络暴露出来的场景,并且结合Nginx可以实现更灵活的请求转发和域名管理。