Rails 3.1で開発したゲームがあり、アップグレードせずに既存のRails2.3.8に追加したいと思います。この3.1ゲームアプリをhttp://mydomain.com/gameのような同じドメインに存在させることは可能ですか?したがって、/gameを含むURLはRails3.1アプリに送信され、他のすべてのURLは通常の2.3アプリに送信されますか?サブディレクトリを使用してnginxを使用してこれにどのようにアプローチしますか(サブドメインを使用せずにseoを失います)?
質問する
678 次
2 に答える
2
これを行うこともできますが、nginx を使用してこの問題に対処できるため、game.mydomain.com のようなサブドメインを使用する方が簡単です。Ruby と Rails の異なるバージョンの分離には、rvm (https://rvm.io/) を使用します。
次に、次のような nginx 構成を作成できます。
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
ディレクティブを使用してこれを行うことができます。
于 2012-10-18T09:11:04.790 に答える
0
はい
既存のアプリケーションで問題を引き起こしたくないサブドメインで実行します。
于 2012-10-18T12:54:53.160 に答える