前言
应用场景示例——在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{}下转发。