понедельник, 22 октября 2012 г.

Nginx, PHP под Windows и запрет доступа

При работе с проектом, упоминавшемся в предыдущей статье, для меня имелась дополнительная трудность: веб сервером был Nginx (pronounced "engine x").

Чтобы не тестировать настройки а рабочем сервере, я решил установить тестовую версию на рабочем компьютере (Windows XP / Windows 7).

Конфигурация Nginx хорошо описана, но как запускать (не в окне cmd) сервер и PHP я не сразу разобрался.

А запускать (и nginx.exe и php.exe) можно в качестве Windows-сервиса, используя программу winsw. Тут описана конфигурация: https://github.com/kohsuke/winsw/wiki.

Для каждого сервиса нужна отдельная копия программы и файл конфигурации. Пример для PHP процесса:
<service>
    <id>php_cgi</id>
    <name>php_cgi</name>
    <description>PHP cgi</description>
    <executable>C:\webserver\php54\php-cgi.exe</executable>
    <logpath>C:\webserver\php54\winsw</logpath>
    <logmode>roll</logmode>
    <depend></depend>
    <startargument>-b127.0.0.1:9000</startargument>
    <stop>taskkill /f /IM php-cgi.exe</stop>
</service>
Пример для Nginx:
<service>
    <id>nginx_serv</id>
    <name>nginx_serv</name>
    <description>nginx server</description>
    <executable>C:/webserver/nginx-1.3.7/nginx.exe</executable>
    <logpath>C:/webserver/nginx-1.3.7/winsw</logpath>
    <logmode>roll</logmode>
    <depend></depend>
    <startargument>-pC:/webserver/nginx-1.3.7</startargument>
    <stopargument>-pC:/webserver/nginx-1.3.7 -s stop
        </stopargument>
</service>
Установка сервиса:

C:\webserver\nginx-1.3.7\winsw\winsw-1.11-bin.exe install

Удаление (сервис не удалится, пока не будет остановлен):

C:\webserver\nginx-1.3.7\winsw\winsw-1.11-bin.exe install

После того, как установлен тестовый сервер, моим главным вопросом, было: как запретить доступ к определённым папкам сайта? Файлы .htaccess тут не работают и всю конфиграцию нужно прописывать в основном конфиге вэб-сервера.

Запрет на папку выглядит так:
server {
    <...>
 
    location /logs {
        deny all;
    }
 
    <...>
}
И дополнительно - бан по IP:
server {
    <...>
 
    deny 88.444.88.444;
 
    <...>
}

Комментариев нет:

Отправить комментарий