Проблемы с nginx + gunicorn для разрешения статического содержимого - PullRequest
0 голосов
/ 03 октября 2019

Я настраиваю среду с помощью приложения django (проект с открытым исходным кодом askbot), gunicorn и nginx. С nginx и gunicorn в разных контейнерах Docker.

Это моя конфигурация nginx.

server {
       listen 80;

       location /static {
         alias /askbot/static;
       }

       location /m {
         alias /askbot/static;
       }

       location / {
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_pass http://askbot:8080/;
       }
     }

Если я запускаю приложение django в режиме отладки, все в порядке, я могу пройти через nginx иЯ вижу, как nginx вызывает gunicorn только для динамического контента, а статический контент разрешается локально.

Но когда я запускаю приложение django с debug false, nginx не вращает статический контент, и если яПосмотрите исходный код для веб-страницы, я вижу, что все пути для статического содержимого были изменены, используя что-то вроде «/ m / CACHE ...». Я полагаю, что это причина того, что nginx больше не может разрешать статическое содержимое.

Например, если использование режима отладки равно true, это один фрагмент исходного HTML-кода.

<link rel="stylesheet" href="/m/CACHE/css/9275d0e5b87f.css" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&amp;subset=latin-ext" rel="stylesheet" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&amp;subset=cyrillic-ext" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/m/default/media/jslib/modernizr.custom.js?v=1"></script> <script type="text/javascript">

И когда работа с debug равна false, тот же фрагмент выглядит так.

<link href="/m/default/media/style/style.css?v=1" rel="stylesheet" type="text/css" /> <link href="/m/default/media/fa-4.3.0/css/font-awesome.css?v=1" rel="stylesheet" type="text/css" /> <link href="/m/default/media/bootstrap/css/bootstrap.css?v=1" rel="stylesheet" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&amp;subset=latin-ext" rel="stylesheet" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&amp;subset=cyrillic-ext" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/m/default/media/jslib/modernizr.custom.js?v=1"></script> <script type="text/javascript">

Я обхожу это вокруг в течение двух дней, может кто-нибудь объяснить мне, почему это происходит и как это можно исправить?, Настройкаnginx по-другому, или отключение django для такого поведения.

Заранее спасибо, Эстебан Кольядо

1 Ответ

0 голосов
/ 04 октября 2019

Хорошо, я смог решить свою проблему,

Это было вызвано приложением компрессора, включенным в файл settings.py.

INSTALLED_APPS = (
...
    'compressor'
...
)

Требуется развернуть приложение django, которое я развертывалэто приложение, поэтому я отключил добавление сжатия к тому же файлу.

   COMPRESS_ENABLED = False

Теперь я не вижу поведения, описанного в моем вопросе, все статические поля добавляются в папку CACHE вURL.

BR, Esteban Collado

...