2016-02-04 5 views
1

У меня есть домен bar.org и его поддомен foo.bar.org. За этими двумя доменами работает сайт Django, доступный через пушки.Перезапись URI при доступе к сайту через субдомен

Конфигурационный из bar.org является классическим и заключается в следующем:

server { 
listen  80; 
server_name bar.org; 
client_max_body_size 4G; 

root /home/bar/dev/bar/; 

location/{ 
    proxy_pass_header Server; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Scheme $scheme; 
    proxy_connect_timeout 10; 
    proxy_read_timeout 60; 
    proxy_pass http://127.0.0.1:8001/; 
    proxy_set_header REMOTE_ADDR $remote_addr; 

} 
} 

Мой вопрос касается поддомена foo.bar.org. Я хочу, чтобы каждый запрос foo.bar.org/XXX был переписан на/foo/XXX моего сайта Django, а также с foo.bar.org/foo/XXX в/foo/XXX. Я попробовал некоторые команды перезаписи URL, но это не сработало. Кто-нибудь уже сделал подобную конфигурацию nginx?

ответ

1

Одним из возможных реализаций является:

server { 
    ... 
    server_name foo.bar.org; 

    location/{ 
     rewrite^/foo$request_uri last; 
    } 

    location /foo/ { 
     proxy_pass http://127.0.0.1:8001; 
     ... 
    } 
} 

Блок foo.bar.org сервер должен запросы через прокси-сервер /foo прозрачно. Обратите внимание, что мы удаляем конечный / из директивы proxy_pass, чтобы предотвратить перезапись URI.

Блок location / гарантирует, что URI, которые не начинаются /foo, переписаны.

+0

Я бы использовал 'location/foo /' cause иначе 'GET/footest' не будет переписан на'/foo/footest' –

+0

@AlexeyTen Спасибо. Ответ обновлен. –

Смежные вопросы