我有一个服务器部分,如下所示:
server {
listen 80;
server_name arch;
root /data/apps/production/fentonGem2/current/public;
passenger_enabled on;
}
工作正常。但是,我想将两个或更多应用部署到同一个server_name
和listen
端口。所以我猜想我会使用以下内容:
server {
listen 80;
server_name arch;
location /app1 {
root /data/apps/production/fentonGem2/current/public;
passenger_enabled on;
}
location /app2 {
root /data/apps/production/fentonGem3/current/public;
passenger_enabled on
}
}
但这不起作用。有谁知道如何部署两个单独的应用程序,并通过以下方式与他们联系:
http://domain.com/app1/
和
http://domain.com/app2/
该设置使用Nginx,Phusion Passenger,Rack和Sinatra。
更新:
感谢您的回复,但我发现它们并且这种方法没有用,尽管我可能不太了解它。看起来我必须在另一个应用程序中部署一个应用程序,这看起来非常不干净。我最终使用的是单独的server
部分,然后更新我的/etc/hosts
文件以获得相同IP地址的服务器别名。所以现在我有:
http://app1/
和
http://app2/
和服务器部分看起来像:
server {
listen 80;
server_name app1;
root /data/apps/production/app1/current/public;
passenger_enabled on;
}
server {
listen 80;
server_name app2;
root /data/apps/production/app2/current/public;
passenger_enabled on;
}
并在/ etc / hosts中:
192.168.1.30 app1 app2
答案 0 :(得分:1)
不确定,但您可能需要passenger_base_uri /app1;
有关Passenger和Nginx conf的更多信息: http://www.modrails.com/documentation/Users%20guide%20Nginx.html#PassengerBaseURI
编辑:
“允许多次指定此选项。执行此操作以在同一虚拟主机下的不同子URI中部署多个应用程序。”
答案 1 :(得分:1)
以下工作:
首先制作了名为app1
和app2
的符号链接,指向“public”目录,如下所示:
ln -s /data/apps/production/fentonGem2/current/public /data/apps/production/fentonGem2/current/app1
ln -s /data/apps/production/fentonGem2/current/public /data/apps/production/fentonGem2/current/app2
修改nginx.conf以使rails_base_uri
看起来如下所示:
...
server {
listen 80;
server_name arch;
location ^~ /app1 {
root /data/apps/production/fentonGem2/current;
rails_env production;
passenger_enabled on;
passenger_base_uri /app1;
}
location ^~ /app2 {
root /data/apps/production/fentonGem2/current;
rails_env production;
passenger_enabled on;
passenger_base_uri /app2;
}
}
...
希望这有帮助。