Ubuntu
使用 nginx 在同一域的不同子 URI 下執行多個 Rails 應用程序
我能夠成功配置 nginx 和乘客 phusion。我現在有以下配置
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; } }
這可以通過使用Passenger Phusion 的
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; }
查看 root 是如何指向 app1 的公用文件夾的。並查看
passenger_base_uri
指令。現在我們需要執行最後一步 - 將 app2 的公用文件夾符號連結到
/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; }