本文主要介绍nginx正向代理。
正向代理介绍
为什么需要正向代理
- 由于直接的网络不通,通过配置代理来间隔访问
- 出于个人隐私的原因,我们希望隐藏自己的IP,让http服务器无法记录我们访问过它
代理类型介绍
1.http代理:
- 透明代理: http服务器知道浏览器端使用了代理,并能获取浏览器端原始IP;
- 匿名代理: http服务器知道浏览器端使用了代理,但无法获取浏览器端原始IP;
- 高匿名代理: http服务器不知道浏览器端使用了代理,且无法获取浏览器端原始IP;
2.soect代理:--支持http代理与其它协议代理,称为全能代理
- SOCKS4: 只支持TCP应用;
- SOCKS4A: 支持TCP应用;支持服务器端域名解析;
- SOCKS5: 支持TCP和UDP应用;支持服务器端域名解析;支持多种身份验证;支持IPV6;
3.其它协议代理
除了http、sockes可以使用代理外,https、ftp、RTSP、pop3等协议同样可以使用代理访问。
客户端配置使用代理
curl命令使用代理
1.curl命令代理选项说明【因格式问题仅粘贴部分代理相关的选项,可使用curl --help查看具体说明】
-x, --proxy [PROTOCOL://]HOST[:PORT] Use proxy on given port
-U, --proxy-user USER[:PASSWORD] Proxy user and password
-s, --silent Silent mode. Don't output anything
--socks4 HOST[:PORT] SOCKS4 proxy on given host + port
--socks4a HOST[:PORT] SOCKS4a proxy on given host + port
--socks5 HOST[:PORT] SOCKS5 proxy on given host + port
2.curl命令使用举例
curl命令使用http代理举例
- curl -x 192.168.56.120:8080 http://www.baidu.com
- curl -x http_proxy://192.168.56.120:8080 http://www.baidu.com
- curl -x HTTPS_PROXY://1192.168.56.120:8080 http://www.baidu.com
- curl -x username:password@1192.168.56.120:8080 http://www.baidu.com
- curl -x 192.168.56.120:8080 -U username:password http://www.baidu.com
curl命令使用socket代理举例
- curl --socks4 192.168.56.120:8080 http://www.baidu.com
- curl -x socks4://192.168.56.120:8080 http://www.baidu.com
- curl -x socks4a://192.168.56.120:8080 http://www.baidu.com
- curl -x socks5://username:password@192.168.56.120:8080 http://www.baidu.com
- curl -x socks5://username:password@192.168.56.120:8080 --proxy-ntlm http://www.baidu.com
windows-cmd中使用代理
1.使用设置环境变量来设置代理
- set http_proxy=http://127.0.0.1:1189
- set https_proxy=http://127.0.0.1:1189
2.也可直接使用上面介绍的curl命令来使用代理
linux使用代理
1.通过设置环境变量来设置代理
在shell直接执行或者在~/.bash_profil[e~/.bashrc]中加入以下语句
- export http_proxy=http://主机IP:1080
- export https_proxy=http://主机IP:1080
- export https_proxy=https://username:password@proxy_ip:port
- export http_proxy=http://username:password@proxy_ip:prot
2.通过修改文件来配置代理
wget配置:vi /etc/wgetrc
- http_proxy = IP:PORT
- ftp_proxy = IP:PORT
yum配置:vi /etc/yum.conf
- 增加一行proxy=IP:PORT
3.在shell可直接使用curl命令
nginx正向代理服务实战
参考官方文档
http://nginx.org/en/docs/http/ngx_http_core_module.html
http://nginx.org/en/docs/http/ngx_http_proxy_module.html
配置文件内容
http { server { listen 8090; location / { proxy_pass $scheme://$http_host$request_uri; } }}
配置说明
直接配置一个http的server,监听8090端口,然后直接在根下,通过proxy_pass把请求转发至目标服务器。nginx读取请求,将协议放在$scheme变量中,将ip加端口放在$http_host变量中,将url路径放在$request_uri中,因此可以通过获取变量内容,获得要访问的目标服务。
此时配置的nginx服务是http匿名代理。应用实例,在网络接口机器上配置代理服务,局域网内机器通过代理可以访问局域网外部资源。
http的透明代理,小编参考了其它技术牛人的配置,查阅了官方文档,试了几天都没有成功,只能后续研究成功后,再补充这部分内容。
socket代理,可以通过steam模块进行配置。编译时需要安装相应的模块--with-stream,以增加此部分功能。
测试
nginx正向代理服务配置在192.168.56.150的8090端口上,前端通过curl -x 192.168.56.150:8090 http://192.168.56.120:8080,访问192.168.56.120:8080上的tomcat页面,正确返回tomcat首页页面内容。
查问nginx正向代理日志,代理服务配置在192.168.56.150上,日志提示访问192.168.56.120:8080返回200提示成功。