Документация
Индивидуальные серверные настройки сайтов
Сайты в Winginx обрабатываются автоматически. Так, если создать папку сайта вида winginx\home\mysite.local\public_html, то сайт будет сразу же (без перезапуска) работать по адресу http://mysite.local/ или http://www.mysite.local/. Не забывайте, что домен нужно еще внести в системный файл hosts вручную или с помощью удобной утилиты HostsEditor (см. раздел Добавление сайтов).
В автоматической конфигурации сайтов используются следующие настройки:
- Директива listen установлена на IP-адрес 127.0.0.1 и порт 80
- Директива server_name содержит mysite.local и алиас с префиксом www — www.mysite.local
- Журнал доступа (access_log): winginx\logs\mysite.local-access.log
- Индесные файлы (index): index.php index.html
- Кодировка ответов по умолчанию (charset): utf-8
Также имеются следующие локейшны (location):
# запретим все запросы, начинающиеся с точки (.htaccess, .user.ini и прочие системные файлы) location ~ /\. { deny all; } # обычный локейшн для всех запросов, начинающихся на / (слеш), то есть всех запросов :) location / { } # локейшны для favicon.ico и robots.txt для снижения нагрузки location = /favicon.ico { } location = /robots.txt { } # последний локейшн обрабатывает PHP-скрипты с расширением .php: location ~ \.php$ { if (!-e $document_root$document_uri){ return 404; } fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Эта конфигурация подойдет для большинства случаев :)
Но если вам необходимы другие настройки сервера под конкретный сайт, то следует создать в папке winginx\conf\vhosts отдельный файл конфигурации с именем домена и расширением .conf, например: mysite.local.conf.
При добавлении домена в hosts через программу HostsEditor можно отметить галочкой необходимость создания папки под сайт. В этому случае будет создана папка вида winginx\home\mysite.local\public_html и автоматически добавлен отдельный конфиг winginx\conf\vhosts\mysite.local.conf со стандартной конфигурацией (описанной выше). В этом случае файл конфигурации уже будет создан и вам останется только его отредактировать. Кстати, созданный программой HostsEditor конфиг можно удалить, если он вам не нужен, сервер все равно будет работать корректно.
После того, как вы отредактировали конфигурационные файлы, вам нужно будет перезапустить Winginx через программу Winginx TM или запустив утилиту start-winginx.exe.
Если после изменений конфигов и перезапуска сервера, сайты не открываются или открываются не так, как ожидается, то читайте журнал ошибок winginx\logs\error.log.
Рассмотрим несколько примеров индивидуальной настройки
Настройки страниц ошибок 404, 403 и т.п.
server { listen 127.0.0.1:80; server_name test.local www.test.local; root home/test.local/public_html; index index.php index.html; log_not_found off; charset utf-8; access_log logs/test.local-access.log main; error_page 404 /404.html; error_page 403 /403.html; location ~ /\. { deny all; } location / { } location ~ \.php$ { if (!-e $document_root$document_uri){ return 404; } fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
server { listen 127.0.0.1:80; server_name test.local www.test.local; root home/test.local/public_html; index default.php default.html; ... location ~ \.php$ { if (!-e $document_root$document_uri){ return 404; } fastcgi_pass localhost:9000; fastcgi_index default.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Меняем порт с 80 на ... 8001 (любой другой)
server { listen 127.0.0.1:8001; server_name test.local www.test.local; ... }
server { listen 127.0.0.1:80; server_name test.local www.test.local test2.local test3.local test4.local; # не забываем добавить перечисленные домены в hosts ... }
Node.js + PHP в одном флаконе :)
server { listen 127.0.0.1:80; server_name test.local www.test.local; root home/test.local/public_html; index index.php index.html; log_not_found off; charset utf-8; access_log logs/test.local-access.log main; location ~ /\. { deny all; } location / { if (!-e $request_filename) { # если файла не существует, проксируем на Node.js proxy_pass http://localhost:1337; } } # файлы с расширением .php отдаем PHP location ~ \.php$ { if (!-e $document_root$document_uri){ return 404; } fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # как вариант, можно выделить урл для Node.js-сервиса location /chat/ { if (!-e $request_filename) { # если файла в папке нет, проксируем на Node.js proxy_pass http://localhost:1337; } } }
Рекомендуемые ресурсы по nginx
NGINX.ORG — Официальный сайт nginx
FORUM.NGINX.ORG — Официальный форум nginx
HABRAHABR.RU — Тематический блог nginx
GREENMICE.INFO — Введение в nginx (статья)