博主信息
Dai的博客
博文
38
粉丝
1
评论
0
访问量
27532
积分:0
P豆:153

nginx 正向代理,反向代理以及PHP代理代理不出去

2021年02月25日 16:58:18阅读数:530博客 / Dai的博客/ Linux

        因与银行合作部署项目,他们都是业务代码放在内网区,外部请求业务代码数据以及 业务代码向互联网请求数据都需要通过一台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

        

实例

// 创建Guzzle HTTP Client时,将HandlerStack传入
        $this->client = new Client(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 {
    resolver 114.114.114.114; #指定DNS服务器IP地址
    listen 9447;
    proxy_connect;
    proxy_connect_allow all;
    location / {
        proxy_pass https://$host$request_uri; #设定代理服务器的协议和地址
        proxy_set_header Host $host;
#       proxy_ssl_server_name on;
        # 配置缓存大小
        proxy_buffers 256 4k;
        # 关闭磁盘缓存读写减少I/O
        proxy_max_temp_file_size 0;
         # 代理连接超时时间
        proxy_connect_timeout 30;

        # 配置代理服务器HTTP状态缓存时间
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 301 1h;
        proxy_cache_valid any 1m;
        }
   }

            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 {
    resolver 114.114.114; #可以使用 8.8.8.8
    listen 8080; #指定代理的端口
    location / {
        proxy_pass http://$http_host$request_uri; #设定代理服务器的协议和地址
    }
}
    1、、设置系统全局变量

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

                    http_proxy=http://172.25.114.72:8080/

                    export http_proxy 

                2、重新加载   

                    # source /etc/profile

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

        



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

            

实例

location  /End/public/
        {
            proxy_pass   这边修改为B服务器的内网IP以及端口 
            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_set_header REMOTE-HOST $remote_addr;
                add_header X-Cache $upstream_cache_status;
                add_header Cache-Control no-cache;
                expires 12h;
        }


        

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • nginx的主要功能:1、;2、负载均衡;3、HTTP服务器;4、
    nginx常见的应用场景有:1、;2、负载均衡;3、web服务器;4、;5、静态分离。
    是指用户需要知道目标服务器的地址,也需要在用户端做任何设定,可直接通过访问服务器来获得目标服务器的资源。提高了内部服务器的安全,加快了对内部服务器的访问速度。

    2021-01-27

    855

    Nginx (engine x) 是一款轻量级的 Web 服务器 、服务器电子邮件(IMAP/POP3)服务器。
    nginx应用场景:1、http服务器;2、虚拟主机;3、;4、配置安全管nginx独立提供http服务器,可做网页静态服务器。
    nginx的特点有:1、高扩展性;2、高可靠性;3、低内存消耗;4、高并发;5、热部署;6、开源协议。nginx是异步架构的web服务器,也可用作、负载均衡器和HTTP缓存。
    下面由宝塔安装教程栏目给大家介绍宝塔面板配置,希望对需要的朋友有所帮助!本教程谷歌搜索为例。首先我们创建一个网站,只需填入域名即可,其他数据库需要创建.PHP版本任意。
    nginx使用教程:本文为大家介绍了的优点,具有一定的参考价值,希望可帮助到大家。优点:1、保护服务安茜;2、服务节点更专注于业务,同时提升性能。
    CodeMeter是一个加密软件,主要用于软件保护,防止盗版防止码的逆工程、编译,使用了目前最安全的加密技术。