django: obsługa plików statycznych przez nginx


Używam apache + mod_wsgi dla django.

I wszystkie
       css/js/images
obsługiwane przez nginx.

Z jakiegoś dziwnego powodu, kiedy
       others/friends/colleagues
spróbuj wejść na stronę,
       jquery/css
nie ładuje się dla nich, więc strona wygląda na niechlujną.
Moje pliki html używają takiego kodu -
<link rel="stylesheet" type="text/css" href="[url=http://x.x.x.x:8000/css/custom.css"/>]http://x.x.x.x:8000/css/custom.css"/>[/url]
<script type="text/javascript" src="[url=http://1x.x.x.x:8000/js/custom.js"></script>]http://1x.x.x.x:8000/js/custom ... gt%3B[/url]

Moja konfiguracja nginx w dostępnych witrynach wygląda następująco:
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/;
}
}

Jest katalog
/opt/aa/webroot/static/
które mają odpowiednie
       css
&
       js
katalogi.
Dziwne jest to, że strony renderują się dobrze, kiedy do nich mam dostęp. Wyczyściłem moje
       cache/etc
, ale moja strona ładuje się dobrze w różnych przeglądarkach.
Ponadto nie widzę żadnych błędów 404 w plikach dziennika Nginx. W rzeczywistości dzienniki nginx nie są w ogóle aktualizowane.

Zrestartowałem serwer nginx jako root, czy to źle? Dane użytkownika w sieci WWW są zdefiniowane w pliku konfiguracyjnym nginx.
Wszelkie wskazówki byłyby świetne.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

  •            server_name         
    musi pasować do nazwy hosta w
               link         
    /
               script         
    Adresy URL. Lub zadeklaruj swoją domyślną konfigurację dla tego interfejsu: parę portów (
               listen 8000 default         
    )
  • Nginx musi nasłuchiwać interfejsu, z którym powiązany jest adres IP twojego hosta (w twoim przypadku jest to w porządku)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Przede wszystkim, gdy używasz django, lepiej jest obsługiwać css/js używając MEDIA_URL, jak zdefiniowano w settings.py.
Teraz przypuśćmy, że masz
         MEDIA_URL='/site_media/'
i w swoich szablonach
         src={{MEDIA_URL}}js/foo.js
lub
         href={{MEDIA_URL}}css/bar.css
.
W swojej konfiguracji nginx będziesz potrzebować odpowiedniego wpisu dla MEDIA_URL. Raczej:
server {
... location/site_media/ {
autoindex on;
root/opt/aa/webroot/;
}
}

To powinno rozwiązać problem. Po prostu sprawdź, czy możesz dodać
/static/
w href/src dołączonych plików js/css i zobacz, co się stanie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Podaję to, co zrobiłem, ponieważ obszar komentarzy wydaje się być zdezorientowany.

Fim i Alaz

- Dzięki za wskazówki, które pomogły.

Oto jak to rozwiązałem dla wszystkich, którzy utknęli na tej samej łodzi:
         settings.py
-

MEDIA_ROOT = ''

MEDIA_URL = '

http://x.x.x.x: 8000/static/
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 (żądanie));

         nginx
-

słuchaj x.x.x.x: 8000;

nazwa_serwera x.x.x.x .;

         Restarted nginx
         Restarted apache

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się