用frp搭建正向代理(http代理或socks5代理)

2024-07-28 17:53:55 浏览数 (2)

前言

应用场景示例——在mac上搭起正向代理,在win上应用这个代理。

开始实操:

下载frp

在github搜fatedier的frp项目,下载适配自己设备的版本:

代码语言:javascript复制
frp_0.44.0_darwin_arm64.tar.gz

更改配置

1⃣️配置frps.ini

代码语言:ini复制
bind_port = 7000

# enable logs
log_file = ./frps.log
trace, debug, info, warn, error
log_level = info
log_max_days = 3

2⃣️配置frpc.ini,配置参考frpc_full.ini中提供的样例

代码语言:ini复制
[common]
server_addr = 127.0.0.1
server_port = 7000

# enable logs
log_file = ./frpc.log
trace, debug, info, warn, error
log_level = info
log_max_days = 3

[proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
plugin_http_user = abc
plugin_http_passwd = abc

[socks5_proxy]
type = tcp
remote_port = 6005
plugin = socks5
plugin_user = abc
plugin_passwd = abc

完成配置后,运行命令检查配置

代码语言:shell复制
./frps verify -c frps.ini
./frpc verify -c frpc.ini

看到syntax is ok即校验通过,下图是frps,frpc也是一样的。

代码语言:shell复制
tnt@tntdeMBP ~ % cd frp_0.44.0_darwin_arm64 
tnt@tntdeMBP frp_0.44.0_darwin_arm64 % ./frps verify -c frps.ini
frps: the configuration file frps.ini syntax is ok
配置校验配置校验

启动frp

依次启动frps和frpc,首先启动frps

代码语言:shell复制
./frps -c frps.ini

再新建一个终端窗口或标签页,用来启动frpc

代码语言:shell复制
./frpc -c frpc.ini

如果需要关闭frp,在对应的终端窗口按下快捷键Ctrl C即可

访问端配置

以http_proxy为例,在win10上手动配置代理,这里通过Chrome插件SwitchyOmega配置,填入代理服务器和代理端口后在页面左侧点击应用选项 保存配置:

创建代理配置创建代理配置

然后切换到这个代理:

切换代理配置切换代理配置

测试

然后尝试网上冲浪:

访问腾讯云访问腾讯云

总结

上图中的 remote address就是代理服务器的地址了,这个是http代理的情况,如果是socks5代理这里还是源服务器的地址。

此外还可以用nginx搭起正向代理,配置形如:

代码语言:apacheconf复制
    server {
        listen                           80;
        server_name                      localhost;
        resolver                         202.96.103.36; #浙江电信dns
        # proxy_connect,该directive由第三方插件提供;
        proxy_connect;
        proxy_connect_allow              443 80;
        proxy_connect_connect_timeout    10s;
        proxy_connect_read_timeout       10s;
        proxy_coneect_send_timeout       10s;
        location / {
            proxy_pass $scheme://$http_host$request_uri;
        }
    }

或形如:

代码语言:apacheconf复制
server {
    resolver 114.114.114.114; #百毒dns
    listen 80;
    server_name  localhost;
	
    #正向代理转发http请求
    location / {
        proxy_pass                 http://$host$request_uri;
        proxy_set_header           HOST $host;
        proxy_buffers              256 4k;
        proxy_max_temp_file_size   0k;
        proxy_connect_timeout      30;
        proxy_send_timeout         60;
        proxy_read_timeout         60;
        proxy_next_upstream error  timeout invalid_header http_502;
    }
}

server {
    resolver 223.5.5.5; #阿里dns
    listen 443;
	
    #正向代理转发https请求
    proxy_connect;
    #源服务器的web资源的端口?
    proxy_connect_allow            443;
    proxy_connect_connect_timeout  10s;
    proxy_connect_read_timeout     10s;
    proxy_connect_send_timeout     10s;
    location / {
        proxy_pass http://$host;
        proxy_set_header Host $host;
    }
}

但是nginx相对于frp还是比较麻烦的,上述https的配置是建立在给nginx添加了第三方插件的基础上,插件名为

ngx_http_proxy_connect_module

然后在访问端,配置代理服务器ip就是nginx的ip,然后代理端口就是nginx的server{}监听的端口例如443,nginx监听的端口就是访问端配置的代理端口。

对于http的web资源,以及https的web资源,不能放到同一个server{}下转发。

0 人点赞