V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
alex321
V2EX  ›  分享创造

分享我的 nginx 反向代理 google:443 配置

  •  
  •   alex321 ·
    alexroyce315 · 2014-07-07 09:22:26 +08:00 · 18405 次点击
    这是一个创建于 3819 天前的主题,其中的信息可能已经有所发展或是发生改变。
    proxy_cache_path /var/nginx/cache/one levels=1:2 keys_zone=one:10m max_size=2g;
    proxy_cache_key "$host$request_uri";

    upstream google {
    server 74.125.224.71:80 max_fails=3;
    server 74.125.224.72:80 max_fails=3;
    server 74.125.224.73:80 max_fails=3;
    server 74.125.224.74:80 max_fails=3;
    server 74.125.224.75:80 max_fails=3;
    server 74.125.224.76:80 max_fails=3;
    server 74.125.224.77:80 max_fails=3;
    server 74.125.224.78:80 max_fails=3;
    server 74.125.224.79:80 max_fails=3;
    server 74.125.224.80:80 max_fails=3;
    }

    server {
    listen 80;
    server_name $你将要代理的 google 的域名$;
    rewrite ^(.*) https://$你将要代理的 google 的域名$$1 permanent;
    }

    server {
    listen 443;
    server_name $你将要代理的 google 的域名$;
    ssl on;
    ssl_certificate 你的 ssl 证书.crt;
    ssl_certificate_key 你的 ssl 密钥.key;

    location /{
    proxy_cache one;
    proxy_cache_valid 200 302 1h;
    proxy_cache_valid 404 1m;
    proxy_redirect https://www.google.com/ /;
    proxy_cookie_domain google.com $你将要代理的 google 的域名$;
    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";
    sub_filter www.google.com $你将要代理的 google 的域名$;
    sub_filter_once off;
    }
    }

    以上,请将$你将要代理的google的域名$替换为你反向代理的 google 的域名,如 g.foo.bar;请将/var/nginx/cache/one替换为你的nginx缓存目录,max_size为缓存区大小,随便你设置吧;upstream google段是设置的google原始可正常访问的ip的负载均衡;反向代理中考虑到自动关键字提示,替换了对应的cookie;443需要替换对应的证书,当然你用自己签发的也没关系,我用的是sslstart的证书。
    20 条回复    2018-04-02 10:13:04 +08:00
    alex321
        1
    alex321  
    OP
       2014-07-07 09:54:08 +08:00
    好似我没法 append 了,补充一下,nginx 启用 ssl 之后,每次 restart 或者 reload 需要输入证书的密码(类似于提示:Enter PEM pass phrase:)。如果你觉得烦,解决方法如下:
    openssl rsa -in 你的ssl密钥.key -out 你的ssl密钥.key.unsecure
    然后将配置中的 ssl_certificate_key 你的 ssl 密钥.key; 更改为 ssl_certificate_key 你的 ssl 密钥.key.unsecure;
    BinbinWang
        2
    BinbinWang  
       2014-07-07 10:02:44 +08:00 via iPhone
    没设置密码
    hellojinjie
        3
    hellojinjie  
       2014-07-07 10:06:31 +08:00
    @BinbinWang 就自己一个人知道的地址不需要密码嘛
    alex321
        4
    alex321  
    OP
       2014-07-07 10:13:46 +08:00
    @BinbinWang
    @hellojinjie

    密码是针对证书的。。
    如果不用 ssl 的话,貌似 google 会给你跳转出去。
    BinbinWang
        5
    BinbinWang  
       2014-07-07 10:37:18 +08:00 via iPhone
    @alex321 我是说证书没设密码
    alex321
        6
    alex321  
    OP
       2014-07-07 11:05:11 +08:00
    @BinbinWang 木有做过没设密码的证书呢。如果启用没有密码的证书,推测 nginx reload 或者 restart 的时候不用输入密码的了。
    alsotang
        7
    alsotang  
       2014-07-07 11:52:19 +08:00
    怎么感觉这种反向代理还不如直接做个 http 代理出来有用
    ultimate010
        8
    ultimate010  
       2014-07-07 13:22:43 +08:00
    用自己生成的免密码证书就可以了,我一直用着挺好.
    alex321
        9
    alex321  
    OP
       2014-07-07 13:27:28 +08:00
    @ultimate010 我就是觉得那个红色的叉叉刺眼,并且手上已经有了 sslstart 的证书,就没有自己去搞了。
    sujin190
        10
    sujin190  
       2014-07-07 13:28:06 +08:00
    这样不会被提示中间人攻击么?我搭过一次,用自己生成的证书会提示中间人攻击,不让访问啊
    alex321
        11
    alex321  
    OP
       2014-07-07 13:48:57 +08:00
    @sujin190 自己签发的证书会出现红叉叉的提示就是说证书有风险,可能引起中间人攻击。
    我部署出来是为了几个小伙伴正常使用 google 搜索功能,申请了 sslstart 的证书。
    ultimate010
        12
    ultimate010  
       2014-07-07 14:36:51 +08:00
    @alex321 嗯,chrome下是有红xx,ff下信任一次就正常了.sslstart证书?有时间我也试一下.
    XadillaX
        13
    XadillaX  
       2014-07-07 17:08:43 +08:00
    如果是自用的话,用自己的 VPS 的 SSH 来弄不就好了么。
    jacy
        14
    jacy  
       2014-07-07 17:18:01 +08:00
    sniproxy,你值得拥有
    alex321
        15
    alex321  
    OP
       2014-07-07 17:19:43 +08:00
    @XadillaX
    是的。我的 vps 上现在已经部署了 ss 和 vpn,同时做了这个反向代理和 phpproxy,满足不同小伙伴层次的需求。
    动手能力强的给 ss,弱一点的上 vpn,懒人的就直接给 phpproxy 和反向代理的地址了。
    sujin190
        16
    sujin190  
       2014-07-07 20:05:12 +08:00
    @alex321 原来如此
    Livid
        17
    Livid  
    MOD
       2014-07-08 06:01:11 +08:00
    这行的意义是什么呢?

    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";
    alex321
        18
    alex321  
    OP
       2014-07-08 08:41:15 +08:00   ❤️ 1
    @Livid 考虑到多个小伙伴使用,统一设置和 google 服务器的通讯的 cookie,用来修正 google 的关键字提示功能。
    coagent
        19
    coagent  
       2014-08-04 16:54:25 +08:00
    @alex321

    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";

    这行的设置值从哪里来的呢?

    另问:google 里搜索还涉及 google 其他域名的话,那部分内容加载怎么解决?
    ZachChan
        20
    ZachChan  
       2018-04-02 10:13:04 +08:00
    找到一个不错的反向代理网站:
    google: https://ym.abc.re/extdomains/www.google.com/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   987 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:14 · PVG 04:14 · LAX 12:14 · JFK 15:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.