技术解析

nginx反向代理GAE成功,但是为何在主域名中提交数据之后还是会跳转到原始的GAE地址?
0
2021-05-31 06:09:20
idczone
站点是 ht国外服务器tp://www.jiyin.it 今天刚做好反向代理。

发帖或者回帖之后就跳到 http://geekiwi.appspot.com 去了,被墙。。

上次别人帮忙弄时就没这个问题,是我的nginx.conf没写对吗?

纠结中。。。
1. 用 upstream
http://wiki.nginx.org/HttpUpstreamModule
2. 记得在 server { location / { ... } } 里要加入 proxy_set_header Host $host;

看了一下,upstream是做负载均衡的。是因为我没做伏在均衡所以出现上面的问题吗?
不太懂这个,所以第一步没做。
第二步做了:
server {
listen 80;
server_name jiyin.it www.jiyin.it *.jiyin.it;
location / {
proxy_pass http://geekiwi.appspot.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
但是这样访问jiyin.it之后就跳转到google.com了。。。奇怪啊。。

你的网页写相对url,不要写成长url了

就是写的相对url。

我这样写就可以
server
{
listen 80;
server_name jiyin.it;
location / {
proxy_pass http://geekiwi.appspot.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

尝试下这样配置:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://ghs.google.com/;
}

又见到你啦,刚看到你的邮件了。按你上面写的就没问题,发帖回帖也不会跳转到geekiwi.appspot.com了。
多谢!

新的问题又出现了。在搞定了jiyin.it之后,我还有另一个域名2wen.it,是用跟jiyin.it同样的配置写的,但是访问时却是google的404错误页面。2wen.it的原始地址是 http://erwenit.appspot.com 。
server {
listen 80;
server_name jiyin.it www.jiyin.it *.jiyin.it;
location / {
proxy_pass http://ghs.google.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
server {
listen 80;
server_name 2wen.it www.2wen.it *.2wen.it;
location / {
proxy_pass http://ghs.google.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}

erwenit.appspot.com 没有绑定 2wen.it吧,直接改了hosts打开也是404。

我绑定了呀,而且我改了本地的hosts后能直接访问erwenit.appspot.com的。
203.208.45.206 erwenit.appspot.com


如图
上面是绑定了我的vps。
下面是刚改了本地的hosts后直接访问 erwenit.appspot.com ,能打开。

我觉得这个应该是解决办法: http://www.ha97.com/1747.html
两个gae应用同时放在一个nginx.conf里,proxy_pass还都是 http://ghs.google.com ,估计nginx就分不清哪个是哪个了,所以需要分别指定。
我试试。

按照上面的办法,失败了。。

现在顶级域名直接cnname到ghs就可以访问

那是不是需要在gae的app设置里把顶级域名和app绑定?要不然那么多app都把顶级域名cnname到ghs,google怎么分的清哪个app对应哪个域名呢?

刚才试了顶级域名直接cnname到ghs,结果还是跳转到了google首页。

proxy_set_header Host your_appid.appspot.com;

现在是绑定的,可以访问了。

www.2wen.it的解析不对
http://www.just-ping.com/index.php?vh=www.2wen.it&c=&s=ping!


@paloalto
刚看了下你的网站貌似还没有配置好吧?
建议使用下面的配置试试看:

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 32 16k;
proxy_busy_buffers_size 64k;
上面这段放到nginx的http里面,在server里仅放置:

server {
server_name www.beta4better.me;
location / {
proxy_pass http://ghs.google.com/;
}
}

这样应该可以。
Good luck!

现在好啦。昨天还是前天来着,google把我服务器的IP封了,今天刚刚解封。
http://www.v2ex.com/t/30243

两年多了,今天重新迁移数据,在新的服务器上用你的办法,又成功了。特此感谢。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服