Ruby on rails 是否可以在同一个域上运行两个不同的Rails应用程序(使用子目录)?
我有一个在Rails 3.1中开发的游戏,我想在不升级的情况下将其添加到现有的Rails 2.3.8中。有没有可能让这个3.1游戏应用程序存在于同一个域名上,比如?那么任何带有/game的url都会指向Rails 3.1应用程序,而所有其他url都会指向常规的2.3应用程序?我将如何使用nginx使用子目录来实现这一点(我不希望使用子域而丢失seo) 您可以这样做,但是使用game.mydomain.com这样的子域更容易,因为这样您就可以使用nginx处理这个问题。为了分离不同的ruby和rails版本,请使用rvm(https://rvm.io/) 然后您可以创建如下nginx配置:Ruby on rails 是否可以在同一个域上运行两个不同的Rails应用程序(使用子目录)?,ruby-on-rails,ruby-on-rails-3,routing,nginx,Ruby On Rails,Ruby On Rails 3,Routing,Nginx,我有一个在Rails 3.1中开发的游戏,我想在不升级的情况下将其添加到现有的Rails 2.3.8中。有没有可能让这个3.1游戏应用程序存在于同一个域名上,比如?那么任何带有/game的url都会指向Rails 3.1应用程序,而所有其他url都会指向常规的2.3应用程序?我将如何使用nginx使用子目录来实现这一点(我不希望使用子域而丢失seo) 您可以这样做,但是使用game.mydomain.com这样的子域更容易,因为这样您就可以使用nginx处理这个问题。为了分离不同的ruby和ra
upstream mydomain.com {
server unix:/var/run/thin/mydomain.0.sock;
server unix:/var/run/thin/mydomain.1.sock;
server unix:/var/run/thin/mydomain.2.sock;
server unix:/var/run/thin/mydomain.3.sock;
}
upstream game.mydomain.com {
server unix:/var/run/thin/game.mydomain.0.sock;
server unix:/var/run/thin/game.mydomain.1.sock;
server unix:/var/run/thin/game.mydomain.2.sock;
server unix:/var/run/thin/game.mydomain.3.sock;
}
server {
listen 80;
server_name mydomain.com;
access_log /path/to/rails/app/log/access.log;
error_log /path/to/rails/app/log/error.log;
root /path/to/rails/app/public;
index index.html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://mydomain.com;
break;
}
}
}
server {
listen 80;
server_name game.mydomain.com;
access_log /path/to/rails/app/log/access.log;
error_log /path/to/rails/app/log/error.log;
root /path/to/rails/app/public;
index index.html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://game.mydomain.com;
break;
}
}
}
如果使用子域而不是子文件夹是可以接受的,那么这应该对您有帮助
如果您确实想使用子目录,可以使用nginxlocation
指令:
是的
在您不想给现有应用程序带来问题的子域上运行它。将配置保存在一个文件中也很重要,。。。因为否则配置文件的命名就很重要了。谢谢你的回答,davidb,但我真的不想使用子域进行seo…子域不是一个普遍的缺点:但是你失去了该子域的所有seo。你说“seo”是什么意思?页面排名?用子目录做怎么样?我不想失去搜索引擎优化。很抱歉,迟来的答复,但它不会影响你的搜索引擎优化。你想知道搜索引擎优化最重要的事情是非常简单的。内容为王,内容越多越好。但是你可以在一个子目录上运行它,这也取决于你。