请教一个 nginx 反代 google 的问题

2014-10-26 14:16:59 +08:00
 ghy459
先贴配置:

server
{
listen 443;
server_name g4w.me;

ssl_certificate /root/ssl/g4w.me.crt;
ssl_certificate_key /root/ssl/g4w.me.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;

location / {
subs_filter www.google.com g4w.me;
subs_filter ssl.gstatic.com www.g4w.me;
subs_filter_types text/css text/xml text/javascript;

proxy_redirect off;
proxy_pass https://www.google.com;
proxy_set_header Host www.google.com;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header Accept-Encoding '';
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

使用 ngx_http_substitutions_filter_module 模块对页面内容进行替换,但发现只有 www.google.com 能够成功替换,而 ssl.gstatic.com 一直替换不了。请问这是什么原因?

具体可以访问 https://g4w.me 看看。

PS.已经试过 ngx_http_sub_module 和 replace-filter-nginx-module ,都是 www.google.com 起作用了而 ssl.gstatic.com 不起作用。
7912 次点击
所在节点    NGINX
32 条回复
anjunecha
2014-10-26 14:39:10 +08:00
把两个域名分开反代,你试试另建一个新的 conf 文件,专门用来反代 ssl.gstatic.com, server_name 填为 www.g4w.me
ghy459
2014-10-26 14:46:06 +08:00
@anjunecha 这一步已经做好了。

现在的问题是,g4w.me 里面的 ssl.gstatic.com 不会自动替换成 www.g4w.me ,而是仍然访问原地址。
anjunecha
2014-10-26 15:07:20 +08:00
@ghy459 我明白你的问题出在哪里了,但是我现在暂时在外面,手机上贴代码不方便,等我一会儿回家之后给你贴代码,稍等我一下可以吗?😄
ghy459
2014-10-26 15:20:21 +08:00
@anjunecha 没关系,先谢了~
anjunecha
2014-10-26 16:07:36 +08:00
@ghy459 你试试在你刚刚建的第二个 conf 文件里面使用这样的设置,使用下面的代码

server
{
listen 443 ssl;
server_name www.g4w.me;

ssl_certificate /root/ssl/g4w.me.crt;
ssl_certificate_key /root/ssl/g4w.me.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;

location / {
subs_filter www.google.com g4w.me;
subs_filter ssl.gstatic.com www.g4w.me;
subs_filter_types text/css text/xml text/javascript;

proxy_set_header Accept-Encoding "";
proxy_set_header Accept-Langauge "zh-CN";

proxy_pass https://ssl.gstatic.com/;

# cookie domain replace
proxy_cookie_domain ssl.gstatic.com www.g4w.me;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
ghy459
2014-10-26 16:50:53 +08:00
@anjunecha 我的 www.g4w.me 配置跟你写的基本一样了。

其实现在的问题不在 www.g4w.me 的反代上,而是 g4w.me 里面的

subs_filter ssl.gstatic.com www.g4w.me;

这句话不起作用,导致在访问 g4w.me 的时候仍然向 ssl.gstatic.com 发送请求而不是向 www.g4w.me 发送。



要达到的效果是下面红线的 ssl.gstatic.com 替换成 www.g4w.me
fairytale
2014-10-26 17:51:51 +08:00
复杂点的替换,用代码实现吧,比如knproxy
spance
2014-10-26 17:56:50 +08:00
想要完美一点,就不要折腾subs_filter了。
好用的方案在这里 https://github.com/spance/AirGoo
hzqim
2014-10-26 18:35:57 +08:00
域名反代不了,就反代IP.
yingluck
2014-10-26 20:51:51 +08:00
试试subs_filter ‘//ssl.gstatic.com’,加上双引号

其实这个只是个图片,不影响搜索
rentaro
2014-10-26 21:12:29 +08:00
我也用 subs_filter,只有这一个资源不知为何无法反代 https://www.google.com/textinputassistant/tia.png
ghy459
2014-10-26 21:33:13 +08:00
@rentaro 加上这一行就好了
subs_filter www.google.com xxx.me;
ghy459
2014-10-26 21:37:18 +08:00
@yingluck 加了双引号还是不行。这个 load 不出来的话标签那里就一直转,强迫症要犯了=。=
ghy459
2014-10-26 21:37:39 +08:00
@spance 好像很强大的样子,晚点试试
rentaro
2014-10-26 21:47:51 +08:00
@ghy459 这句是加了的,我是说除了这一个资源其他都反代成功
ghy459
2014-10-26 21:58:40 +08:00
@rentaro 额,我就是加了这个,然后成功反代你说的资源。。。
anjunecha
2014-10-26 22:23:53 +08:00
@ghy459 不能实现?可以试试通过反代 IP ,把之前我贴的那个配置里面的 proxy_pass 参数改一下试试

具体改为 :

proxy_pass https://ssl.gstatic.com/;

改为

proxy_pass http://173.194.38.127;
rentaro
2014-10-26 22:30:29 +08:00
ssl.gstatic.com 这个,我是用 subs_filter 替换为一个子目录,比如 www.g4w.me/gstc。然后
用这个子目录去反代资源
rentaro
2014-10-26 22:31:55 +08:00
呃,描述有误,目录的叫法不对
anjunecha
2014-10-26 22:44:17 +08:00
@rentaro 可能表述为路径更妥当😊

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

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

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

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

© 2021 V2EX