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

2014-07-07 09:22:26 +08:00
 alex321
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的证书。
18195 次点击
所在节点    分享创造
20 条回复
alex321
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
2014-07-07 10:02:44 +08:00
没设置密码
hellojinjie
2014-07-07 10:06:31 +08:00
@BinbinWang 就自己一个人知道的地址不需要密码嘛
alex321
2014-07-07 10:13:46 +08:00
@BinbinWang
@hellojinjie

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/121285

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX