Nginxとpassengerphusionを正常に構成できました。私は今、次の構成を持っています
server {listen 80 server_name **sub1.example.com** root /home/user/app1/public }
server {listen 80 server_name **sub2.example.com** root /home/user/app2/public }
さて、次の構成に変更したい
server {listen 80 server_name **dev.example.com/example1** root /home/user/app1/public }
server {listen 80 server_name **dev.example.com/example2** root /home/user/app2/public }
Locationディレクティブを使用しようとしましたが、成功しませんでした。これが可能かどうかさえわかりません。どんな助けでも大歓迎です。ありがとう。
以下は私のnginx.conf設定です
server {
listen 80;
server_name dev.example.com;
location = /app1/ {
root /home/Rails/app1/public/;
passenger_enabled on;
Rails_env development;
}
location /app2/ {
root /home/Rails/app2/public/;
passenger_enabled on;
Rails_env development;
}
}
これは、PassengerPhusionのpassenger_base_uri
ディレクティブを利用することで可能になります。私のドメインがwww.example.com
であると仮定しましょう
ここで、次のURIに対して複数のRailsアプリケーションを実行したい
www.example.com
-ロードRails App1
www.example.com/app2
-ロードRails App2
Nginx.confのサーバーブロックは次のようになります。
server {
listen 80;
server_name www.example.com;
root /var/www/app1/public;
passenger_enabled on;
passenger_base_uri /app2;
}
ルートがapp1のパブリックフォルダーをどのように指しているかを確認します。そして、passenger_base_uri
ディレクティブを見てください。
ここで、最後のステップを実行する必要があります-symlinkapp2のパブリックフォルダーを/var/www/app1/public/app2
にリンクします。これは、次のコマンドを実行することによって実行されます。
ln -s /var/www/app2/public /var/www/app1/public/app2
このリンクを作成したら、nginxを再起動すると、同じドメインでさまざまなRailsアプリを提供する準備が整います。
前の回答:
server_name dev.example.com/example1
間違っている。 dev.example.comをdev.example.com/example1に移動させたいとのことですが。そのような場合は、以下のようにURLを書き換える必要があります
location = / { rewrite ^ http://dev.example.com/example1 ; }
コメントの後に答えてください:
あなたのコメントから、同じURI /ドメイン内から複数のRailsアプリを提供したいことがわかりました。
server {
listen 80;
server_name dev.example.com;
root /home/user/app1/public;
passenger_enabled on;
passenger_base_uri /app2;
passenger_base_uri /app3;
....truncated...
Rails_spawn_method smart;
Rails_env production;
}
ここで受け入れられた答えよりも良い方法があります。フォルダをシンボリックリンクする必要はありません。
ルートURIの代わりにサブURIにアプリをデプロイすることもできます。たとえば、アプリケーション/ website/phusionの仮想ホストがすでにあるとします。
_http {
...
server {
listen 80;
server_name www.phusion.nl;
root /websites/phusion/public;
passenger_enabled on;
}
}
_
また、/ website/secondappにあるアプリケーションにURL http://www.phusion.nl/subpath からアクセスできるようにする必要があります。これを行うには、以下を実行する必要があります。
~ ^/<SUBURI>(/.*|$)
を使用して場所を作成します。これは、「正確に、または/で始まるすべてに一致する」という正規表現です。<PATH TO YOUR APPLICATION PUBLIC SUBDIRECTORY>$1
_を設定します。<SUBURI>
_を設定します。<PATH TO YOUR APPLICATION ROOT>
_を設定します。ロケーションブロック内で、passenger_document_root _<PATH TO YOUR APPLICATIOS PUBLIC SUBDIRECTORY>
_を設定します。ロケーションブロック内で、それに応じてapp_typeとstartup_fileを設定します。次に例を示します。
_http {
...
server {
listen 80;
server_name www.phusion.nl;
root /websites/phusion/public;
passenger_enabled on;
# This block has been added.
location ~ ^/subpath(/.*|$) {
alias /websites/secondapp/public$1; # <-- be sure to point to 'public'!
passenger_base_uri /subpath;
passenger_app_root /websites/secondapp;
passenger_document_root /websites/secondapp/public;
passenger_enabled on;
}
}
}
_
完了したら、Nginxを再起動します。 DebianまたはRPMパッケージを介してNginxをインストールした場合:
_Sudo service nginx restart
_
参照: 記事