我们正在生产ruby 2.0.0-p0
服务器上passenger 4.0.0rc
nginx/1.2.7
(ubuntu 12.04
)正在运行rails 3.2.12
(passenger_base_uri
)。请注意,我们的nginx.conf中的passenger_base_uri
未指向base subdir。相反,它什么都不返回这是{nginx.conf中的server {
listen 80;
server_name 154.49.55.6;
root /ebs/www/;
passenger_enabled on;
rails_env production;
passenger_base_uri /nbhy;
#for rails >= 3.1, assets pipeline
location ~ ^/assets/ {
expires max;
add_header Cache-control public;
add_header ETag "";
break;
}
}
:
symlink nbhy
在/ ebs / www下的服务器上创建了/ebs/www/nbhyop/current/public
,并指向/nbhy
。 nginx error log
是rails app的基础uri。
这是[ 2013-05-06 17:47:00.5469 718/7f5097fc0700 Pool2/Implementation.cpp:1098 ]: [App 838 stdout]
2013/05/06 17:47:26 [error] 735#0: *104 open() "/ebs/www/authentify/session" failed (2: No such file or directory), client: 6.5.5.94, server: 154.49.55.6, request: "POST /authentify/session HTTP/1.1", host: "154.49.55.6", referrer: "http://154.49.55.6/nbhy/signin"
,
{{1}}
上面的路径应该是:/ ebs / www / nbhy / authentify / session而不是/ ebs / www / authentify / session。
相同的配置适用于乘客3.x.如何解决这个问题?谢谢你的帮助
答案 0 :(得分:1)
我认为您使用passenger_base_uri是出于错误的目的。通过指定passenger_base_uri,您说:
“我有另一个网络应用程序,生活在/ nbhy下”
我在Nginx输出中看到你正在进行POST / authentify / session。由于您没有访问/ nbhy下的任何网址,所以passenger_base_uri选项无效。如果你POST / nbhy / authentify / session,它就会生效。
也许您想将虚拟主机的根目录设置为/ ebs / www / nbhyop / current / public?