搜索
首页php教程PHP源码生成nginx配置文件,反向代理google

生成nginx配置文件,反向代理google

生成nginx配置文件,反向代理google

google的ip地址经常改变,所以要用nslookup去更新ip

#!/bin/env php
<?php
 
define("CONF_PATH", &#39;/usr/local/nginx/conf/hosts&#39;);
 
$google_ips = __DIR__ . "/google_ips.txt"; // 保存IP地址文件
$ngx_cnf = CONF_PATH . "/51open.conf";     // NGINX配置文件
 
exec("nslookup google.com", $out, $ret); 
 
$start = false;
$ips = [];
 
foreach($out as $line) {
    // answer: 之后的是服务器对应IP
    if (false !== strpos($line, "answer:")) {
        $start = true;
    } else if (!$start) {
        continue;
    }
 
    preg_match("/Address: ((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.)
    {3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))/i", $line, $matches);
    if (!empty($matches) && isset($matches[1])) {
        $ips[] = $matches[1];
    }
}
 
// 保存的IP地址
if (file_exists($google_ips)) {
    $data = file_get_contents($google_ips);
    if ($data) {
        $arr = unserialize($data);
        if (isset($arr[&#39;ips&#39;]) && date(&#39;Ymd&#39;, $arr[&#39;__logtime&#39;])==date(&#39;Ymd&#39;)) {
            $ips = array_merge($ips, $arr[&#39;ips&#39;]);
            $ips = array_unique($ips);
        }
    }
}
 
$data = [&#39;__logtime&#39; => time(), &#39;ips&#39; => $ips];
file_put_contents($google_ips, serialize($data));
 
$str = &#39;&#39;;
foreach ($ips as $ip) {
    $str .= sprintf("\n    server %s:80 max_fails=3;", $ip);
}
 
if (!$str) {
    exit;
}
 
$ngx_tpl = <<<EOT
client_body_buffer_size    512k;  
proxy_connect_timeout      5;  
proxy_read_timeout         60;  
proxy_send_timeout         5;  
proxy_buffer_size          16k;  
proxy_buffers              4 64k;  
proxy_busy_buffers_size    128k;  
proxy_temp_file_write_size 128k;
 
#levels设置目录层次
#keys_zone设置缓存名字和共享内存大小
#inactive在指定时间内没人访问则被删除在这里是1天
#max_size最大缓存空间
proxy_cache_path /data/cache/nginx/51open levels=1:2 keys_zone=51open:20m inactive=1d max_size=2g;
 
upstream google {%s
}
 
server {
    listen       80;
    server_name  g.51open.net google.51open.net;
 
    rewrite ^(.*)\$  https://\$host\$1 permanent;     
}
 
server {
    listen       443;
    server_name  g.51open.net google.51open.net;
 
    ssl on;
    ssl_certificate      /usr/local/nginx/conf/hosts/ssl/g.51open.net.crt;
    ssl_certificate_key  /usr/local/nginx/conf/hosts/ssl/g.51open.net.key;         
 
    location / {
        proxy_cache         51open;
        proxy_cache_key     \$host\$uri\$is_args\$args;
        proxy_cache_valid   200 304 301 302 3d;   #哪些状态缓存多长时间
        proxy_cache_valid   any 1d;               #其他的缓存多长时间
 
        proxy_redirect      https://www.google.com/ /;
        proxy_cookie_domain google.com g.51open.net;
        proxy_pass          http://google;
        proxy_set_header    Host "www.google.com";
        proxy_set_header    Accept-Encoding "";
        proxy_set_header    User-Agent \$http_user_agent;
        proxy_set_header    Accept-Language "zh-CN";
        proxy_set_header    Cookie "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:
        TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2w1IQ-Maw";             
         
        # --- 关键字替换 start --- #
        sub_filter_types text/css text/xml text/javascript; # 过滤类型
        sub_filter ssl.gstatic.com g.51open.net;            # google会加载ssl.gstatic.com的几个资源和文件
        sub_filter www.google.com  g.51open.net;
        sub_filter_once off;
        # --- 关键字替换  end  --- #
    }
 
    ## 反向代理ssl.gstatic.com ##
    location /gb {
        proxy_cache         51open;
        proxy_cache_key     \$host\$uri\$is_args\$args;
        proxy_cache_valid   200 304 301 302 3d;   #哪些状态缓存多长时间
        proxy_cache_valid   any 1d;               #其他的缓存多长时间
 
        proxy_pass          http://ssl.gstatic.com/gb/;
        proxy_cookie_domain ssl.gstatic.com g.51open.net;
        proxy_set_header    Accept-Encoding "";
        proxy_set_header    User-Agent \$http_user_agent;
        proxy_set_header    Accept-Language "zh-CN";
    }
}
EOT;
 
$content = sprintf($ngx_tpl, $str);
 
file_put_contents($ngx_cnf, $content);

 以上就是生成nginx配置文件,反向代理google的内容,更多相关内容请关注PHP中文网(www.php.cn)!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具