nginx反向代理GAE成功,但是为何在主域名中提交数据之后还是会跳转到原始的GAE地址?

2012-03-20 21:35:50 +08:00
 paloalto
站点是 http://www.jiyin.it 今天刚做好反向代理。

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

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

纠结中。。。
5844 次点击
所在节点    NGINX
22 条回复
Livid
2012-03-20 21:53:30 +08:00
1. 用 upstream

http://wiki.nginx.org/HttpUpstreamModule

2. 记得在 server { location / { ... } } 里要加入 proxy_set_header Host $host;
paloalto
2012-03-20 22:47:30 +08:00
@livid 看了一下,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了。。。奇怪啊。。
zhuzhuor
2012-03-20 22:52:25 +08:00
你的网页写相对url,不要写成长url了
paloalto
2012-03-20 22:53:59 +08:00
@zhuzhuor 就是写的相对url。
ksky
2012-03-20 23:06:17 +08:00
我这样写就可以

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;
}
}
beta4better
2012-03-20 23:22:03 +08:00
尝试下这样配置:

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/;
}
paloalto
2012-03-20 23:47:48 +08:00
@beta4better 又见到你啦,刚看到你的邮件了。按你上面写的就没问题,发帖回帖也不会跳转到geekiwi.appspot.com了。

多谢!
paloalto
2012-03-21 00:09:25 +08:00
@beta4better 新的问题又出现了。在搞定了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;
}
}
lemonda
2012-03-21 00:24:31 +08:00
erwenit.appspot.com 没有绑定 2wen.it吧,直接改了hosts打开也是404。
paloalto
2012-03-21 00:30:15 +08:00
@lemonda 我绑定了呀,而且我改了本地的hosts后能直接访问erwenit.appspot.com的。

203.208.45.206 erwenit.appspot.com
paloalto
2012-03-21 00:32:03 +08:00

如图

上面是绑定了我的vps。
下面是刚改了本地的hosts后直接访问 erwenit.appspot.com ,能打开。
paloalto
2012-03-21 00:54:25 +08:00
我觉得这个应该是解决办法: http://www.ha97.com/1747.html

两个gae应用同时放在一个nginx.conf里,proxy_pass还都是 http://ghs.google.com ,估计nginx就分不清哪个是哪个了,所以需要分别指定。

我试试。
paloalto
2012-03-21 01:22:35 +08:00
按照上面的办法,失败了。。
CoX
2012-03-21 01:47:54 +08:00
现在顶级域名直接cnname到ghs就可以访问
paloalto
2012-03-21 01:56:44 +08:00
@CoX 那是不是需要在gae的app设置里把顶级域名和app绑定?要不然那么多app都把顶级域名cnname到ghs,google怎么分的清哪个app对应哪个域名呢?
paloalto
2012-03-21 02:11:12 +08:00
@paloalto 刚才试了顶级域名直接cnname到ghs,结果还是跳转到了google首页。
cute
2012-03-21 10:44:46 +08:00
proxy_set_header Host your_appid.appspot.com;
lemonda
2012-03-21 10:50:22 +08:00
@paloalto 现在是绑定的,可以访问了。
lemonda
2012-03-21 10:56:51 +08:00
beta4better
2012-03-22 19:36:58 +08:00
@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 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

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

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

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

© 2021 V2EX