记利用frp配合nginx实现内网穿透
背景 :
内网有一台服务器A 在NAT背后
无法被其他客户端访问
借助公网服务器B来配置内网透传
即可通过B来访问A
服务端安装frps 启动: ./frps -c frps.ini
配置文件frps.ini
如下
[common]
subdomain_host = example.com # 为父域名
bind_port = 1234 # 为frp使用的端口
vhost_http_port = 8080 # 为外网服务器的端口
token = XXX # frp客户端和服务端token相同才可连接
客户端安装frpc 启动: ./frpc -c frpc.ini
配置文件frps.ini
如下
[common]
server_addr = example.com # 为服务器地址
server_port = 1234 # frp端口
token = XXX # frp客户端和服务端token相同才可连接
[web] # 开启web转发服务
type = http # 方式: http
local_port = 88 # 本地服务的端口
subdomain = sub # 子域名
locations = / # 根
配置nginx的转发规则
配置nginxsudo vim /etc/nginx/nginx.conf
如下
underscores_in_headers on;
server{
listen 80;
listen [::]:80;
server_name sub.example.com; # 这里设置子域名转发规则
location / {
#underscores_in_headers on;
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_pass http://localhost:8080; # 这里是vhost_http_port
}
}
这样就实现了访问 sub.example.com
转发到本地的localhost:88
这里需要注意的是 nginx对http header中包含下划线的header信息都会过滤掉
所以需要添加 underscores_in_headers on;
才能转发自定义的header信息