Как обслуживать подкаталог как root в nginx, используя django? - PullRequest
0 голосов
/ 15 декабря 2018

Когда пользователь посещает сайт www.website.com, я хотел бы разместить контент на сервере так, как если бы он зашел на сайт www.website.com/frontend/.Однако я хочу замаскировать / frontend / часть URL, чтобы пользователь ее не видел.Можно ли это сделать?

Как будет выглядеть мое правило перезаписи?

решено:

location = / {
    rewrite ^/$ /frontend/ last;
}

Моя проблема была

location = / {} #Matches the path project.example.com only (mind there is a =)
location / {} #Matches every path (mind: there is no =)

Ответы [ 3 ]

0 голосов
/ 15 декабря 2018

Вам не нужно переписывать правила для этого.Просто используйте

location / {
    proxy_pass http://<your_backend>/frontend/;
}
0 голосов
/ 15 декабря 2018

Я не думаю, что использование rewrite является идеальным решением (кстати, я не думаю, что оно охватит все аспекты вашей проблемы и может вызвать новые проблемы)

Решение заключается в следующем:

Конфигурация nginx должна выглядеть примерно так:

upstream django {
    server unix://tmp/gunicorn.sock;  //
}

server {
    listen 80;
    server_name <your_app_domain_here>;
    location /frontend {
        include uwsgi_params;
        proxy_pass http://django/;
    }
}

или, если вы не используете файл sock, вы можете использовать метод http.например, если вы используете django на локальном хосте с портом 8000, измените его на:

proxy_pass http://localhost:8000/;

Но помните , вы должны добавить это в свой django settings.py.Если это не работает вообще:

USE_X_FORWARDED_HOST = True
FORCE_SCRIPT_NAME = "/frontend"

Этим способом вы меняете базовый URL в django.поэтому все URL-адреса django должны начинаться с метки fronted.Теперь nginx может отлично работать в качестве обратного прокси для вашего сайта:)

0 голосов
/ 15 декабря 2018

решено:

location = / {
    rewrite ^/$ /frontend/ last;
}

Моя проблема была

location = / {} #Matches the path project.example.com only (mind there is a =)
location / {} #Matches every path (mind: there is no =)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...