背景 :
內網有一台服務器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信息