Итак, у меня есть два приложения, которые я хочу запустить на сервере. Одно приложение, которое я хотел бы использовать как приложение по умолчанию, то есть все URL-адреса должны отправляться этому приложению по умолчанию, , за исключением для определенного пути, давайте назовем его /foo
:
http://mydomain.com/ -> app1
http://mydomain.com/apples -> app1
http://mydomain.com/foo -> app2
Мои два стоечных приложения установлены следующим образом:
/var
/www
/apps
/app1
app.rb
config.ru
/public
/app2
app.rb
config.ru
/public
app1 -> apps/app1/public
app2 -> apps/app2/public
(app1
и app2
- символические ссылки на публичные каталоги соответствующих приложений). Это настройка Пассажира для подчиненных URI, описанных здесь: http://www.modrails.com/documentation/Users%20guide%20Nginx.html#deploying_rack_to_sub_uri
Со следующим конфигом у меня /foo
собирается в app2:
server {
listen 80;
server_name mydomain.com;
root /var/www;
passenger_enabled on;
passenger_base_uri /app1;
passenger_base_uri /app2;
location /foo {
rewrite ^.*$ /app2 last;
}
}
Теперь, как мне заставить app1 забрать все остальное? Я пробовал следующее (помещено после директивы location /foo
), но я получаю 500 с бесконечным внутренним перенаправлением:
location / {
rewrite ^(.*)$ /app1$1 last;
}
Я надеялся, что директива last
предотвратит это бесконечное перенаправление, но, думаю, нет. Мой /foo
переписать все еще работает. И я все еще могу перейти к http://mydomain.com/app1
.
Есть идеи? Спасибо!