2013-05-19 6 views
0

У меня есть следующие nodejs структуры, которая находится в каталоге/дома/Ubuntu/директории проекта:я не могу служить статическим Nginx

sever 
site 
    |-css 
    | |-styles.css 
    |-img 
    | |-sprite.png 
    |-js 
    |-script.js 

Я пытаюсь служить статические активы на Nginx, так что я написал следующее место:

upstream myapp_upstream { 
    server 127.0.0.1:3000; 
    keepalive 64; 
} 

server { 
    listen 80; 

    server_name www.myapp.com; 

    error_page 400 404 500 502 503 504 /50x.html; 
    location /50x.html { 
      internal; 
      root /usr/share/nginx/www; 
    } 

    location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico|home/|html|xml) { 
     root /home/ubuntu/project/site; 
     access_log off; 
     expires max; 
    } 

    location/{ 
     proxy_redirect off; 
     proxy_set_header X-Real-IP   $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto $scheme; 
     proxy_set_header Host     $http_host; 
     proxy_set_header X-NginX-Proxy true; 
     proxy_set_header Connection ""; 
     proxy_http_version 1.1; 
     proxy_pass   http://myapp_upstream; 
     proxy_intercept_errors on; 
    } 
} 

Но когда я пытаюсь открыть мой сайт в браузере я получаю неудавшейся статус всех запрашиваемых активов. Это проблема?

EDIT: Мой путь к CSS для примера:

http://www.myapp.com/css/styles.css 

ответ

1

Ну

Добавить / к корневому пути.

root /usr/share/nginx/www; 

должен быть

root /usr/share/nginx/www/; 

Используйте alias для активов, таких как:

alias /home/ubuntu/project/site/; (again, add the last /) 

These беспорядок для меня:

location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico|home/|html|xml) 

Вы должны проверить эти http://wiki.nginx.org/NginxHttpCoreModule#location

Я не вижу эти папки images/, javascript/, stylesheets/, flash/, media/, static/ and home/ в вашей карте сайта.

И вот как |html|xml ищут пути /html или /xml не в .html или .xml файлов.

Тогда попробуйте:

location ~ ^/(robots.txt|humans.txt) { 
    alias /home/ubuntu/project/site/; 
    access_log off; 
    expires max; 
} 

location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { //add here all the file extensions needed. 
    alias /home/ubuntu/project/site/; 
    access_log off; 
    expires max;  
} 
+0

Хм. Это похоже на работу, но теперь у меня другая проблема. Когда я пытаюсь запросить css, как http://www.myapp.com/css/styles.css, я получаю переадресацию на http://www.myapp.com/css/styles.css/ с ошибкой 403 – Erik

+0

являются .js и .img работает? – jmingov

+0

Да, я решил проблему, добавив вместо этого псевдоним с '/' в конце – Erik

Смежные вопросы