记利用frp配合nginx实现内网透传

frp下载

背景 :

内网有一台服务器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信息

posted @ 2019-02-02 17:55 Licsber 阅读(...) 评论(...) 编辑 收藏