Я использую apache + mod_wsgi для django.
И все css/js/images
обслуживаются через nginx.
По какой-то странной причине, когда others/friends/colleagues
попробуйте зайти на сайт, jquery/css
не загружается для них, поэтому страница выглядит беспорядочно.
Мои файлы html используют такой код -
<link rel="stylesheet" type="text/css" href="http://x.x.x.x:8000/css/custom.css"/>
<script type="text/javascript" src="http://1x.x.x.x:8000/js/custom.js"></script>
Моя конфигурация nginx в доступных сайтах выглядит так:
server {
listen 8000;
server_name localhost;
access_log /var/log/nginx/aa8000.access.log;
error_log /var/log/nginx/aa8000.error.log;
location / {
index index.html index.htm;
}
location /static/ {
autoindex on;
root /opt/aa/webroot/;
}
}
Есть каталог /opt/aa/webroot/static/
которые имеют соответствующие css
& js
каталоги.
Странно то, что страницы отображаются нормально, когда я к ним обращаюсь. Я очистил свой cache/etc
, но у меня страница загружается нормально из разных браузеров.
Кроме того, я не вижу никаких ошибок 404 в файлах журнала nginx. На самом деле журналы для nginx вообще не обновляются.
Я перезапустил сервер nginx с правами root, это неправильно? Пользовательские www-данные определены в файле конфигурации nginx.
Любые указатели были бы замечательными.
server_name
должно соответствовать имени хоста в link
/script
URL-адреса. Либо объявите свою конфигурацию по умолчанию для этого интерфейса: пара портов (listen 8000 default
)Прежде всего, при использовании django лучше, если вы обслуживаете свои css / js, используя MEDIA_URL, как определено в settings.py.
Теперь предположим, что у вас есть MEDIA_URL='/site_media/'
и в ваших шаблонах у вас есть src={{MEDIA_URL}}js/foo.js
или href={{MEDIA_URL}}css/bar.css
.
В вашей конфигурации nginx вам потребуется соответствующая запись для MEDIA_URL. Что-то вроде:
server {
...
location /site_media/ {
autoindex on;
root /opt/aa/webroot/;
}
}
Это должно решить проблему. Просто чтобы проверить, можно ли добавить /static/
в href / src включенных файлов js / css и посмотрите, что произойдет.
Помещаю то, что я сделал, сюда, поскольку область комментариев, кажется, перепутала.
Фим и Алаз - Спасибо за подсказки, которые помогли.
Вот как я решил это для всех, кто застрял в одной лодке:
settings.py
-
MEDIA_ROOT = ''
MEDIA_URL = 'http: //x.x.x.x: 8000 / static /'
In my html
-
<script type = "text / javascript" src = "{{MEDIA_URL}} js / jquery-1.3.2.min.js"> </ script>
In my view
-
return render_to_response ('templates / login-register.html', {}, context_instance = RequestContext (запрос));
nginx
-
слушайте x.x.x.x: 8000;
имя_сервера x.x.x.x .;
Restarted nginx
Restarted apache