Конфигурация для Django, Apache и Nginx - PullRequest
8 голосов
/ 03 февраля 2011

Я установил свое приложение Django на Apache + mod_wsgi.Для обслуживания статических файлов я использую Nginx, как предложено на сайте проекта Django.http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/

Apache работает на порте 8081, а nginx на порте 80. Теперь некоторые люди считают, что моя конфигурация неверна, и я должен поменять роль Apache и Nginx.Я не уверен, почему это должно быть.И если действительно моя конфигурация неверна, почему сайт django предлагает неправильный метод?

1 Ответ

12 голосов
/ 03 февраля 2011

Документы django, на которые вы ссылались, не предлагают использовать apache в качестве обратного прокси-сервера.Они просто предлагают вам использовать отдельный веб-сервер, поэтому я бы сказал, что документы не ясны по этому вопросу - они не предлагают ничего неправильно .

Мой первоначальный ответ предполагал, что выВ качестве обратного прокси-сервера использовался nginx, поскольку порт 80 является портом HTTP, который используется, когда браузер пытается перейти по URL-адресу без указания порта.

Существует множество полных руководств по настройке nginx + apache черезБыстрый поиск в Google, но вот суть для настройки nginx:

location / {
        # proxy / requests to apache running django on port 8081
        proxy_pass         http://127.0.0.1:8081/;
        proxy_redirect     off;
    } 

location /media/ { 
        # serve static media directly from nginx
        root   /srv/anuva_project/www/;
        expires 30d;
        break;
    }

Все, что вам нужно сделать, это удалить строки прокси из вашей конфигурации apache и вместо этого добавить операторы прокси в ваш файл nginx.conf.

Если вы действительно хотите обслуживать свой сайт с порта 8081, вы можете прослушивать nginx на порту 8081 и слушать apache на другом порту.

Дело в том, что apache находится в каком-то непонятном порту, обслуживая только запросы, отправленные ему из nginx, в то время как статическое обслуживание файлов обрабатывается nginx.

...