Документация

Индивидуальные серверные настройки сайтов

Сайты в 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 (статья)

Winginx © Alexei Shabalin, 2011-2019