2015-01-22 3 views
1

Я пытаюсь создать базовую страницу приветствия в OpenResty. Он отлично работает, если я использую content_by_lua, однако, когда я пытаюсь использовать content_by_lua_file я получил эту ошибку:Openresty content_by_lua_file

2015/01/22 13:52:35 [alert] 2183#0: lua_code_cache is off; this will hurt performance in /Users/lobster/documents/web_server/conf/nginx.conf:10 
2015/01/22 13:52:38 [error] 2223#0: *4 failed to load external Lua file "/Users/lobster/documents/web_server/./lua/main.lua": cannot open /Users/lobster/documents/web_server/./lua/main.lua: Permission denied, client: 127.0.0.1, server: , request: "GET/HTTP/1.1", host: "localhost:8080" 

Но это не имеет смысла, потому что я могу изменить/Users/омаров/документы/web_server/lua/main.lua файл легко. Есть моя конфигурация:

worker_processes 1; 
error_log logs/error.log; 

events { 
    worker_connections 1024; 
} 
http { 
    lua_package_path '/lua/main.lua;'; 
    server { 
    lua_code_cache off; 
     listen 8080; 
     location/{ 
      default_type 'text/plain'; 
      content_by_lua_file ./lua/main.lua; 
     } 
    } 
} 

Я запускаю nginx от root, поэтому nginx может получить доступ к любому файлу на моем компьютере. Что я сделал не так?

UPD: Я установил его с помощью content_by_lua с требуют внутри него

+1

Не достаточно ли сообщения об ошибке? В нем говорится, что у него нет разрешения на открытие/чтение рассматриваемого файла. Исправьте разрешения для файла. Обратите внимание, что запуск Nginx при входе в систему как root не совпадает с Nginx, выполняемым с правами root. – Dayo

+0

Tye ** абсолютный путь **? – fannheyward

ответ

0

все каталоги на пути должны быть исполняемыми текущей системной учетной записи, а не только файл является читаемым. read this please

+0

Это может теоретически ответить на вопрос, но было бы лучше включить основные части ответа здесь для будущих пользователей и предоставить ссылку для справки. Ответы с ответами могут стать недействительными – abarisone

3

Я также решить эту проблему, и я решил ее, добавив:

user root root; 

в моем nginx.conf, потому что пользователь моего Lua файла сценария и группа корень.

Также вы можете изменить владельца файла сценария lua.

1

nginx обычно имеет 2 процесса, один - мастерский процесс, другой - рабочий процесс. Процесс выполняется пользователем root, рабочий процесс выполняется пользователем, поэтому вы не должны позволять никому пользователю читать/Пользователи/омастер/документы/файл web_server /./ lua/main.lua.

КСТАТИ:

rensike добавить "суперпользователя корень;" в nginx.conf рабочий процесс будет запускаться пользователем root, поэтому он решил вашу проблему.

Мой английский настолько беден, извините.

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