я не знаю, как Nginx обслуживает статические файлыДжанго + Nginx + Gunicorn - 404 для статического файла при отладке является ложным
/и т.д./Nginx/сайт доступный/по умолчанию:
upstream example.com {
server unix:/home/www/example/env/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name example.com;
client_max_body_size 4G;
access_log /home/www/example/logs/nginx-access.log;
error_log //home/www/example/logs/nginx-error.log;
location /static/ {
alias /home/www/example/codeab/static/;
}
location /uploads/ {
alias /home/www/example/codeab/uploads/;
}
location/{
include proxy_params;
proxy_pass http://unix:/home/www/example/env/run/gunicorn.sock;
}
# Error pages
error_page 500 502 503 504 /500.html;
location = /500.html {
root /home/www/example/templates/;
}
error_page 404 /401.html;
location = /401.html {
root /home/www/example/codeab/templates/;
internal;
}
}
установка Django .py
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static_content/'),
)
STATIC_ROOT = os.path.join(BASE_DIR,'static/')
Кроме того, я сделал collectstatic до того DEBUG = False
кажется, что Nginx является не рассматривая вышеуказанный конфигурационный файл, так как для страницы 404 он не показывает мою пользовательскую страницу 401.html.
После редактирования конфигурации, я связал его с сайта-поддержкой по
sudo ln -s /etc/site-available/default /etc/site-enabled/default
service nginx reload
sudo service nginx restart
Пожалуйста, помогите или дайте мне знать, если я пропускаю какие-то вещи.
Добро пожаловать в переполнение стека! Благодарим вас за публикацию такого подробного описания вашей проблемы, это очень помогает. Несколько вещей, прежде чем мы перейдем к сути вашей проблемы. Если NGINX не видит файл конфигурации, как он возвращает 404 для ваших статических файлов? Связывание, которое вы указали в конце, является правильным, но вам нужно проверить 'nginx.conf', если он использует' include/etc/site-enabled/*; 'или' include/etc/site-enabled/* .conf; 'Если это' * .conf', вам нужно переименовать 'default' в' default.conf'. Кроме того, немного странно, что ваши 'site-enabled' и' site-available' находятся в '/ etc /' –
Это не стандартная установка. В случае вашего пользовательского шаблона 4xx: Если NGINX служит для этого, он должен быть статическим HTML-файлом. У него не может быть никаких templatetags, поскольку он не обрабатывается Django.Мое предложение состояло в том, чтобы использовать внутреннюю схему ошибок Django для этого. Наконец, о ваших статических файлах, конфиг прав. Единственное, что я бы изменил, это 'location^~/static/{', так что NGINX знает, что он должен выполнять регулярное совпадение, а не прямое сравнение строк. –
Привет Кинан, спасибо за быстрый ответ. Я проверил в своем nginx.conf, это 'include/etc/site-enabled/*;' поэтому имя файла верное, т.е. 'default' – anuj249