2015-10-10 3 views
0

Каково минимальное значение, необходимое для запуска сервера Nginx для обслуживания статического контента (js и т. Д.)?Сервер Nginx для статического содержимого

У меня есть:

http { 
    server { 
     listen 80; 
     location/{ 
      root /Users/matt/Dev; 
     } 
    } 
} 

events { 
    worker_connections 1024; 
} 

Но я получаю:

Запретный

You don't have permission to access/on this server. 

Я бежал sudo nginx -s reload

ответ

0

По умолчанию, когда мы запускаем Nginx в качестве root, например sudo nginx ..., Nginx начнет мастер-процесс на root и прослушает один или несколько HTTP-портов, но по соображениям безопасности он начнет несколько рабочих процессов пользователем nobody. Эти рабочие процессы будут обрабатывать входящие запросы. Мы можем проверить это бегом

UPDATE: изменение ps -ef к ps aux, потому что когда на MacOSX/FreeBSD ps -ef не показывает пользователю

$ ps aux | grep nginx 

В вашем случае, поскольку пользователь nobody не имеет разрешения на доступ/Users/matt/Dev, поэтому мы получим ошибку разрешения при доступе к соответствующему местоположению.

Чтобы исправить это, мы можем попробовать любой из

  1. определяют пользователя в nginx.conf, например, user matt; OR
  2. установить разрешение доступа/Пользователи/матовый/Dev. Обратите внимание, что нам также необходимо убедиться, что у пользователя нет разрешения на поиск (а именно, x-разрешение) для доступа ко всем каталогам в префиксе пути имени пути, например./Users,/Users/matt,/Users/matt/Dev, и имеет разрешение на чтение/Users/matt/Dev и его дочерние файлы.
+0

Недостаточно. Это будет нужно «autoindex», как я написал в своем ответе. – uzsolt

+0

@uzsolt Я не думаю, что включение 'autoindex' является хорошим выбором, если мы просто не установим сайт для загрузки, потому что он часто небезопасен и может привести к утечке некоторых частных источников или db-конфигураций. BTW Если в файле '/ Users/matt/Dev' нет файла index.html, используйте директиву' index' для определения файлов индекса по умолчанию, например. 'index my-index-file.html;' можно найти более подробную информацию http://nginx.org/en/docs/http/ngx_http_index_module.html#index – xfeep

+0

Да, еще один вариант - создать индексный файл. Но только разрешения (как указано в вашем ответе) недостаточно. – uzsolt

0

С вашей конфигурацией вы можете получить доступ к отдельным файлам. Таким образом, вы можете получить example.com/example.js (попробуйте, и вы увидите, что он работает).

С example.com вы хотите показать содержимое корневого каталога (/Users/matt/Dev), который отключен. Чтобы включить использование autoindex:

location/{ 
    root /Users/matt/Dev; 
    autoindex on; 
} 

Смотреть больше информации here:

процессы модуля

ngx_http_autoindex_module запросы заканчивая слэш символ («/») и производит распечатку каталога.

+0

Но все же это не работает –

+0

Я думаю, что apache использует этот адрес, но не знает, как проверить –

+0

Вы тоже запускаете apache? – uzsolt

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