因与银行合作部署项目,他们都是业务代码放在内网区,外部请求业务代码数据以及 业务代码向互联网请求数据都需要通过一台Web区的代理转发;这就需要部署一台即可以进行反射代理,又可以正向代理的服务器了;

先把注意点以及踩过的坑先说一下

不建议正向代理与反向代理都通过一个接口,否则配置到你怀疑人生

一、 A服务器正向代理配置几个端口看你的业务需求: 1、如果你只需要代理https,那么A服务器开通一个端口专门代理https服务器;2、如果你需要代理的即有http又有https,那么就开通两个端口,一个用于代理http;一个用于代理https;

A服务器反向代理:也单独开通一个端口用于反射代理吧

二、我配置完成这些后,在cmd命令行输入 curl https://www.baidu.com,正向请求到数据,但我执行PHP代码后,却连不能请求到数据,百度了一大圈也没啥用,后来就通过代码来进行代理 ;

1、curl方法

实例

$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_PROXY,'32.9.39.51:9447');//这里进行代理到A服务器的IP以及端口curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//POST数据curl_setopt($ch,CURLOPT_POST,1);//把post的变量加上curl_setopt($ch,CURLOPT_POSTFIELDS,$data);$output=curl_exec($ch);curl_close($ch);return$output;

2、Guzzle HTTP Client

实例

//创建GuzzleHTTPClient时,将HandlerStack传入$this->client=newClient(array('handler'=>$stack,'allow_redirects'=>true,'proxy'=>'32.9.39.51:9447'));


定位 :

A服务器----------- 在外网Web区,可以访问互联网,也可以通过指定端口访问内网区,即我们所说的代理转发服务器

B服务器------------在内网区,访问不了互联网

一、、A服务器安装Nginx,

这里分两种情况讨论

第一种是已经安装完成了Nginx, 但你的正向代理却需要https

1、下载https代理模块,git地址:https://github.com/chobits/ngx_http_proxy_connect_module,如果不能下载就百度ngx_http_proxy_connect_module这个模块

下载完成后,看一下里面的readme文档,里面有介绍相应模块所对应的nginx版本

2、查询当前 nginx 安装的配置信息,默认安装如下

# ./sbin/nginx -V

configure arguments: --prefix=/usr/local/nginx --。。。。。。。。。。。。。。。。

# patch -p1 < /opt/tool/ngx_http_proxy_connect_module-master/patch/proxy_connect.patch

# ./configure --prefix=/usr/local/nginx --add-module=/opt/tool/ngx_http_proxy_connect_module-master

# make

# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

# cp ./objs/nginx /usr/local/nginx/sbin/

3、在A服务器配置正向代理

实例

server{resolver114.114.114.114;#指定DNS服务器IP地址listen9447;proxy_connect;proxy_connect_allowall;location/{proxy_passhttps://$host$request_uri;#设定代理服务器的协议和地址proxy_set_headerHost$host;#proxy_ssl_server_nameon;#配置缓存大小proxy_buffers2564k;#关闭磁盘缓存读写减少I/Oproxy_max_temp_file_size0;#代理连接超时时间proxy_connect_timeout30;#配置代理服务器HTTP状态缓存时间proxy_cache_valid20030210m;proxy_cache_valid3011h;proxy_cache_validany1m;}}

4、设置系统全局变量

# vi /etc/profile 将下面的添加到最后

http_proxy=http://172.25.114.72:8080/ 这个填写A服务器的内网IP 以及端口

https_proxy=https://172.25.114.72:8084/这个填写A服务器的内网IP 以及端口

export http_proxy https_prox no_proxy

5、重新加载

# source /etc/profile

# curl -k https://www.baidu.com


2、第二种情况完成正向代理https 只需要http

直接设置nginx配置文件即可

实例

server{resolver114.114.114;#可以使用8.8.8.8listen8080;#指定代理的端口location/{proxy_passhttp://$http_host$request_uri;#设定代理服务器的协议和地址}}
1、、设置系统全局变量

# vi /etc/profile 将下面的添加到最后

http_proxy=http://172.25.114.72:8080/

export http_proxy

2、重新加载

# source /etc/profile

# curl -khttps://www.baidu.com




二、A服务器配置反向代理;使用9446端口进行反射代理到B服务器的

实例

location/End/public/{proxy_pass这边修改为B服务器的内网IP以及端口proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_headerREMOTE-HOST$remote_addr;add_headerX-Cache$upstream_cache_status;add_headerCache-Controlno-cache;expires12h;}



更多相关文章

  1. tp6 全局异常处理
  2. 内网dns服务部署以及主从dns配置
  3. (视频) 基于HTML5的服务器远程访问工具
  4. rsync+inotify实现服务器的实时同步
  5. Android TCP Socket通信客户端/服务器端Demo(附APP源码)
  6. mongoDB入门系列之配置解释及错误汇总
  7. Playbook分发Nginx配置文件
  8. 实战--Playbook批量部署zabbix-agent
  9. 实战--Playbook批量更改服务器主机名

随机推荐

  1. Linux用户和组的操作(一) 用户文件/etc/pas
  2. Linux命令应用大词典-第21章 LVM和RAID管
  3. Linux网络状态工具ss命令使用详解
  4. [置顶] Linux C编程--string.h函
  5. Ubuntu12挂载扩充/home
  6. Linux文件映射的反思
  7. [转帖]linux文件描述符文件/etc/security
  8. 重装linux,从ubuntu到centos
  9. 双插槽与单插槽内存模型?
  10. Linux socket通信——并发服务器(fork)