Nginx

Nginx + Unicorn 多個帶位置的應用程序 - 路由

  • March 27, 2015

我想只使用不同的位置塊來執行多個 Rails 應用程序。啟動和配置了不同的獨角獸工人,他們工作得很好。

每個應用程序都在同一個文件夾下:/var/www/<app>,所以我這樣配置 nginx:

root /var/www;

location  /app1/ {
 root /var/www/app1/public;
 try_files $uri/index.html $uri.html $uri @app1;
}

location  /app2/ {
 root /var/www/app2/public;
 try_files $uri/index.html $uri.html $uri @app2;
}

我的問題是,有了這個規則集,一個請求(如 mydomain/app1/check)像這樣進入我的 app1:Started GET "/app1/check" for ...我只想Started GET "/check" for ...

我應該對我的配置進行哪些更改?

如果您不想更改上游參數(無論您在您的@app位置做什麼),一個簡單的rewrite方法可以幫助您:

location /app1/ {
   root /var/www/app1/public;
   rewrite ^/app1/(.*)$ /$1 break;
   try_files /app1/$uri/index.html /app1/$uri.html /app1/$uri @app1;
}

break參數 to將rewrite導致 nginx 重寫 URI 而不實際重定向或重新路由請求。

不要忘記為/app1/您的try_files名字添加前綴,因為$uri在執行時已經被重寫try_files

引用自:https://serverfault.com/questions/496665