Доброго дня!
Вся проблема в том, что я хочу использовать определенную структуру каталогов:
c:\admin\nginx\* - сервер nginx
c:\admin\php\* - php-интерпретатор
c:\admin\public_html\* - содержит файлы сервера (html/php/jpg/...)
т.е. каталог “public_html”, должен находится вне каталога “nginx”, на уровень выше.
Пытаюсь использовать, при сборке под Windows, следующий конфиг:
http {
...
server {
...
#root c:/admin/public_html; # работает корректно
#root /admin/public_html; # работает корректно
root ../public_html; # не работает!
#root ./../public_html; # не работает!
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
try_files $fastcgi_script_name =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_intercept_errors on;
}
}
}
при попытке выполнить php-скрипт nginx возвращает:
"No input file specified."
Причем статические файлы работают прекрасно.
если поместить каталог public_html в внутрь каталога nginx, тогда используя
root public_html;
все работает замечательно, но меня это не очень устраивает.
Предполагается, что сам каталог "c:\admin" будет иметь не фиксированное имя или путь и хотелось бы отвязать nginx от всех этих сложностей.
Все внешние пути будут прописываться конфиге который и будет запускать nginx, таким образом, чтобы при изменении директории "admin" не пришлось править "root" в "nginx.conf".
Пытался перебросить путь к "root" через запуск:
>nginx -g "env ROOT_DIR=/admin/public_html;"
и принять с помощью:
perl_set $rootDir 'sub { return $ENV{"ROOT_DIR"}; }';
или
set_by_lua $rootDir 'return os.getenv("ROOT_DIR")';
но, как я понял в Windows сборке нету соответствующих модулей, а собрать их самостоятельно для меня затруднительно:)
Буду очень признателен за помощь.
Спасибо.