Редактирование Nginx

Материал из K.Wiki
Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте.

В истории изменений этой страницы будет записан ваш IP-адрес.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
В этой статье описывается установка и настройка веб-сервера nginx для работы с [[PHP-FPM]], [[node.js]] и [[MySQL]] в операционной системе [[Ubuntu]].
+
В этой статье описывается установка и настройка веб-сервера nginx для работы с [[PHP-FPM]] и [[MySQL]] в операционной системе [[Ubuntu]].
  
 
== Установка ==
 
== Установка ==
Строка 5: Строка 5:
  
 
== Файл конфигурации ==
 
== Файл конфигурации ==
Настройки хранятся в файле '''/etc/nginx/nginx.conf'''.
+
Настройки хранятся в файле <tt>/etc/nginx/nginx.conf</tt>.
<pre>## Пользователь, от имени которого запускается nginx.
+
user www-data;
+
  
## Количество рабочих процессов, рекомендуется устанавливать по числу ядер.
+
# Пользователь, от имени которого запускается nginx.
worker_processes auto;
+
user www-data;
 
+
## Файл с ID процесса.
+
# Количество рабочих процессов, рекомендуется устанавливать по числу ядер.
pid /run/nginx.pid;
+
worker_processes 4;
 
+
## Директива уменьшает разрешение времени в рабочих процессах, за счёт чего уменьшается число системных вызовов gettimeofday().
+
# Файл с ID процесса.
timer_resolution 100ms;
+
pid /run/nginx.pid;
 
+
 
+
# Директива уменьшает разрешение времени в рабочих процессах, за счёт чего уменьшается число системных вызовов gettimeofday().
events {
+
timer_resolution 100ms;
        ## Максимальное число подключений к серверу на один рабочий процесс.
+
        worker_connections 768;
+
# Ограничение на максимальное число открытых файлов.
 
+
worker_rlimit_nofile 8192;
        ## Эффективный метод обработки соединений, используемый в Linux 2.6+
+
        use epoll;
+
events {
 
+
    # Максимальное число подключений к серверу на один рабочий процесс.
        ## Если выключен, то рабочий процесс за один раз принимает только одно новое соединение.
+
    worker_connections 768;
        multi_accept on;
+
   
}
+
    # Эффективный метод обработки соединений, используемый в Linux 2.6+
 
+
    use epoll;
 
+
   
http {
+
    # Если выключен, то рабочий процесс за один раз принимает только одно новое соединение.
        ####
+
    #multi_accept on;
        ## Основные настройки.
+
}
        ####
+
 
+
http {
        ## Разрешить использовать sendfile().
+
    ##
        sendfile on;
+
    # Основные настройки.
 
+
    ##
        ## Разрешить использование параметра сокета TCP_NOPUSH во FreeBSD или TCP_CORK в Linux.
+
   
        ## Параметр включается только при использовании sendfile.
+
    # Разрешить использовать sendfile().
        tcp_nopush on;
+
    sendfile on;
 
+
   
        ## Разрешить использование параметра TCP_NODELAY.
+
    # Разрешить использование параметра сокета TCP_NOPUSH во FreeBSD или TCP_CORK в Linux.
        ## Параметр включаются только при переходе соединения в состояние keep-alive.
+
    # Параметр включается только при использовании sendfile.
        tcp_nodelay on;
+
    tcp_nopush on;
 
+
   
        ## Таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера.
+
    # Разрешить использование параметра TCP_NODELAY.
        ## Значение 0 запрещает keep-alive соединения с клиентами.
+
    # Параметр включаются только при переходе соединения в состояние keep-alive.
        keepalive_timeout 65;
+
    tcp_nodelay on;
 
+
   
        ## Максимальный размер хэш-таблиц типов.
+
    # Таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера.
        types_hash_max_size 2048;
+
    # Значение 0 запрещает keep-alive соединения с клиентами.
 
+
    keepalive_timeout 65;
        ## Запретить выдавать версию nginx’а в сообщениях об ошибках и в поле “Server” заголовка ответа.
+
   
        server_tokens off;
+
    # Максимальный размер хэш-таблиц типов.
 
+
    types_hash_max_size 2048;
        ## Задать размер корзины в хэш-таблицах имён серверов.
+
   
        ## Значение по умолчанию зависит от размера строки кэша процессора.
+
    # Запретить выдавать версию nginx’а в сообщениях об ошибках и в поле “Server” заголовка ответа.
        # server_names_hash_bucket_size 64;
+
    server_tokens off;
 
+
   
        ## Разрешить или запретить использовать в абсолютных перенаправлениях, выдаваемых nginx’ом, основное имя сервера, задаваемое директивой server_name.
+
    # Подключить описание MIME-типов.
        ## Если использование основного имени сервера запрещено, то используется имя, указанное в поле “Host” заголовка запроса.
+
    include /etc/nginx/mime.types;
        ## Если же этого поля нет, то используется IP-адрес сервера.
+
   
        # server_name_in_redirect off;
+
    # MIME-тип ответов по умолчанию.
 
+
    default_type application/octet-stream;
        ## Подключить описание MIME-типов.
+
   
        include /etc/nginx/mime.types;
+
       
 
+
    ##
        ## MIME-тип ответов по умолчанию.
+
    # Настройки логов.
        default_type application/octet-stream;
+
    ##
 
+
   
 
+
    # Настройки файла логов доступа.
        ####
+
    access_log /var/log/nginx/access.log;
        ## Настройки SSL
+
   
        ####
+
    # Настройки файла логов ошибок.
 
+
    error_log /var/log/nginx/error.log;
        ## Разрешить указанные протоколы.
+
   
        ## Параметры TLSv1.1 и TLSv1.2 работают только при использовании библиотеки OpenSSL версии 1.0.1 и выше.
+
   
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
+
    ##
 
+
    # Настройки сжатия.
        ## Указать, чтобы при использовании протоколов SSLv3 и TLS серверные шифры были более приоритетны, чем клиентские.
+
    ##
        ssl_prefer_server_ciphers on;
+
   
 
+
    # Разрешить сжатие ответа методом gzip.
 
+
    gzip on;
        ####
+
   
        ## Настройки логов.
+
    # Запретить сжатие ответа методом gzip для запросов с полями заголовка “User-Agent”, совпадающими с заданными регулярными выражениями.
        ####
+
    gzip_disable "msie6";
 
+
   
        ## Задать путь, формат и настройки буферизованной записи в лог.
+
    # Разрешить или запретить выдавать в ответе поле заголовка “Vary: Accept-Encoding”, если активны директивы gzip, gzip_static или gunzip.
        ## http://nginx.org/ru/docs/http/ngx_http_log_module.html#access_log
+
    #gzip_vary on;
        access_log /var/log/nginx/access.log;
+
   
 
+
    # Разрешить или запретить сжатие ответа методом gzip для проксированных запросов в зависимости от запроса и ответа.  
        ## Настроить запись в лог.
+
    #gzip_proxied any;
        ## На одном уровне может использоваться несколько логов (1.5.2).
+
   
        ## http://nginx.org/ru/docs/ngx_core_module.html#error_log
+
    # Степень сжатия ответа методом gzip.
        error_log /var/log/nginx/error.log;
+
    # Допустимые значения находятся в диапазоне от 1 до 9.
 
+
    #gzip_comp_level 6;
 
+
   
        ####
+
    # Число и размер буферов, в которые будет сжиматься ответ.
        ## Настройки сжатия.
+
    #gzip_buffers 16 8k;
        ####
+
   
 
+
    # Минимальная HTTP-версия запроса, необходимую для сжатия ответа.
        ## Разрешить сжатие ответа методом gzip.
+
    #gzip_http_version 1.1;
        gzip on;
+
   
 
+
    # Разрешить сжатие ответа методом gzip для указанных MIME-типов в дополнение к “text/html”.
        ## Запретить сжатие ответа методом gzip для запросов с полями заголовка “User-Agent”, совпадающими с заданными регулярными выражениями.
+
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
        gzip_disable "msie6";
+
   
 
+
   
        ## Разрешить или запретить выдавать в ответе поле заголовка “Vary: Accept-Encoding”, если активны директивы gzip, gzip_static или gunzip.
+
    ##
        # gzip_vary on;
+
    # Настройки виртуальных хостов.
 
+
    ##
        ## Разрешить или запретить сжатие ответа методом gzip для проксированных запросов в зависимости от запроса и ответа.
+
   
        # gzip_proxied any;
+
    # Подключить дополнительные файлы настроек.
 
+
    include /etc/nginx/conf.d/*.conf;
        ## Степень сжатия ответа методом gzip.
+
   
        ## Допустимые значения находятся в диапазоне от 1 до 9.
+
    # Подключить настройки активных сайтов.
        # gzip_comp_level 6;
+
    include /etc/nginx/sites-enabled/*;
 
+
}
        ## Число и размер буферов, в которые будет сжиматься ответ.
+
        # gzip_buffers 16 8k;
+
 
+
        ## Минимальная HTTP-версия запроса, необходимую для сжатия ответа.
+
        # gzip_http_version 1.1;
+
 
+
        ## Разрешить сжатие ответа методом gzip для указанных MIME-типов в дополнение к “text/html”.
+
        # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
+
 
+
 
+
        ####
+
        ## Настройки виртуальных хостов.
+
        ####
+
 
+
        ## Подключить дополнительные файлы настроек.
+
        include /etc/nginx/conf.d/*.conf;
+
 
+
        ## Подключить настройки активных сайтов.
+
        include /etc/nginx/sites-enabled/*;
+
}</pre>
+
  
 
Для учета изменений настроек нужно перезагрузить службу
 
Для учета изменений настроек нужно перезагрузить службу
  sudo service nginx reload
+
  # service nginx reload
  
Ссылки
+
=== Ссылки ===
 
* [http://nginx.org/ru/docs/ngx_core_module.html Основная функциональность - nginx.org]
 
* [http://nginx.org/ru/docs/ngx_core_module.html Основная функциональность - nginx.org]
 
* [http://nginx.org/ru/docs/http/ngx_http_core_module.html Модуль ngx_http_core_module - nginx.org]
 
* [http://nginx.org/ru/docs/http/ngx_http_core_module.html Модуль ngx_http_core_module - nginx.org]
Строка 150: Строка 128:
 
== Виртуальные хосты ==
 
== Виртуальные хосты ==
 
Виртуальные хосты используются для описания параметров отдельных сайтов, которые обслуживает nginx.
 
Виртуальные хосты используются для описания параметров отдельных сайтов, которые обслуживает nginx.
По-умолчанию, настройки хранятся в отдельных файлах в директории '''/etc/nginx/sites-available/''',
+
По-умолчанию, настройки хранятся в отдельных файлах в директории <tt>/etc/nginx/sites-available/</tt>,
а для активации хоста нужно создать символьную ссылку в директории '''/etc/nginx/sites-enabled/''' на соответствующий файл настроек
+
а для активации хоста нужно создать символьную ссылку в директории <tt>/etc/nginx/sites-enabled/</tt> на соответствующий файл настроек
  sudo ln -s /etc/nginx/sites-available/{имя сайта} /etc/nginx/sites-enabled/{имя сайта}
+
  # ln -s /etc/nginx/sites-available/{имя сайта} /etc/nginx/sites-enabled/{имя сайта}
и перезагрузить службу
+
и перезапустить сервер
  sudo service nginx reload
+
  # service nginx reload
  
 
Один файл может содержать описание для нескольких сайтов, каждое должно находиться логическом блоке
 
Один файл может содержать описание для нескольких сайтов, каждое должно находиться логическом блоке
 
  server {
 
  server {
     ## Для того, чтобы сайт был доступен по адресам <nowiki>http://{имя домена 1}/</nowiki> и <nowiki>http://{имя домена 2}/</nowiki>.
+
     # Обрабатываемый порт.
    server_name {имя домена 1} {имя домена 2};
+
         
+
    ## Обрабатываемый порт.
+
 
     listen 80;
 
     listen 80;
     ## Обрабатываемый порт для определенного домена.
+
     # Обрабатываемый порт для определенного домена.
 
     #listen {имя домена} 8080;
 
     #listen {имя домена} 8080;
     ## Обрабатываемый порт для ipv6.
+
     # Обрабатываемый порт для ipv6.
 
     #listen [::]:80 [{имя домена}] ipv6only=on;
 
     #listen [::]:80 [{имя домена}] ipv6only=on;
 
      
 
      
     ## Директория с файлами сайта.
+
     # Директория с файлами сайта.
 
     root /var/www/{имя сайта}/www;
 
     root /var/www/{имя сайта}/www;
 
      
 
      
     ## Файл лога для проблем доступа.
+
     # Для того, чтобы сайт был доступен по адресам <nowiki>http://{имя домена 1}/</nowiki> и <nowiki>http://{имя домена 2}/</nowiki>.
 +
    server_name {имя домена 1} {имя домена 2};
 +
         
 +
    # Файл лога для проблем доступа.
 
     access_log /var/www/{имя сайта}/access.log;
 
     access_log /var/www/{имя сайта}/access.log;
 
      
 
      
     ## Файл лога для ошибок.
+
     # Файл лога для ошибок.
 
     error_log /var/www/{имя сайта}/error.log;
 
     error_log /var/www/{имя сайта}/error.log;
 
      
 
      
     ## Подключение шаблона со стандартными настройками.
+
     # Подключение шаблона со стандартными настройками.
 
     include /etc/nginx/templates/default;
 
     include /etc/nginx/templates/default;
 
      
 
      
     ## Страница для ошибки 404.
+
     # Страница для ошибки 404.
 
     #error_page 404 /404.html;
 
     #error_page 404 /404.html;
 
      
 
      
     ## Перенаправление при ошибках на статическую страницу /50x.html.
+
     # Перенаправление при ошибках на статическую страницу /50x.html.
 
     #error_page 500 502 503 504 /50x.html;
 
     #error_page 500 502 503 504 /50x.html;
 
     #location = /50x.html {
 
     #location = /50x.html {
Строка 189: Строка 167:
 
     #}
 
     #}
 
  }
 
  }
Если <code>server_name</code> совпадает с именем сайта, то можно использовать макрос <code>$server_name</code> для подстановки вместо <code>{имя сайта}</code>.
 
  
 
=== Шаблоны ===
 
=== Шаблоны ===
 
Благодаря директиве <tt>include</tt> в блок настроек виртуального хоста можно включать внешние файлы.
 
Благодаря директиве <tt>include</tt> в блок настроек виртуального хоста можно включать внешние файлы.
 
Шаблоны принято использовать для описания общих настроек.
 
Шаблоны принято использовать для описания общих настроек.
Файлы шаблонов, как правило, сохраняются в директорию '''/etc/nginx/templates/'''.
+
Файлы шаблонов, как правило, сохраняются в директорию <tt>/etc/nginx/templates/</tt>.
  
Например, стандартные настройки HTTP-хоста в файле '''/etc/nginx/templates/default'''
+
Например, стандартные настройки HTTP-хоста в файле <tt>/etc/nginx/templates/default</tt>
  ## Файлы, открываемые при пустом пути, в порядке приоритета.
+
  # Файлы, открываемые при пустом пути, в порядке приоритета.
  index index.php index.html index.htm;
+
  index index.html index.htm;
 
   
 
   
 
  location / {
 
  location / {
     ## Сначала запрос обрабатывается как файл, потом как директория, потом происходит переход на страницу 404.
+
     # Сначала запрос обрабатывается как файл, потом как директория, потом происходит переход на страницу 404.
 
     try_files $uri $uri/ =404;
 
     try_files $uri $uri/ =404;
 
      
 
      
     ## Раскоментировать для использования naxsi в этой области.
+
     # Раскоментировать для использования naxsi в этой области.
 
     #include /etc/nginx/naxsi.rules
 
     #include /etc/nginx/naxsi.rules
 
  }
 
  }
 
   
 
   
  ## Закрыть доступ к файлами .htaccess и .htpassword.
+
  # Закрыть доступ к файлами .htaccess и .htpassword.
 
  location ~ /\.ht {
 
  location ~ /\.ht {
 
     deny all;
 
     deny all;
 
  }
 
  }
 
   
 
   
  ## Отключить логи, связанные с отсутствием иконки сайта.
+
  # Отключить логи, связанные с отсутствием иконки сайта.
 
  location = /favicon.ico {
 
  location = /favicon.ico {
 
     log_not_found off;
 
     log_not_found off;
Строка 219: Строка 196:
 
  }
 
  }
 
   
 
   
  ## Доступ к файлу с настройками для поисковых роботов.
+
  # Доступ к файлу с настройками для поисковых роботов.
 
  location = /robots.txt {
 
  location = /robots.txt {
 
     allow all;
 
     allow all;
 
     log_not_found off;
 
     log_not_found off;
 
     access_log off;
 
     access_log off;
}
 
 
# Активировать кэширование.
 
location ~* \.(ico|css|js)$ {
 
    expires 7d;
 
    add_header Pragma public;
 
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
 
 
  }
 
  }
  
 
=== PHP ===
 
=== PHP ===
Для работы с [[PHP-FPM]] достаточно создать шаблон '''/etc/nginx/templates/php''':
+
Для работы с [[PHP-FPM]] достаточно создать шаблон <tt>/etc/nginx/templates/php</tt> (<tt>{имя домена}</tt> нужно заменить своим значением)
  ## Адрес FastCGI-сервера (имя или адрес и порт или путь к UNIX-сокету).
+
  # Адрес FastCGI-сервера (имя или адрес и порт или путь к UNIX-сокету).
  ## Указывается в настройках виртуального хоста.
+
  # Указывается в настройках виртуального хоста.
 
  #fastcgi_pass
 
  #fastcgi_pass
 
   
 
   
  ## Имя файла, который при создании переменной $fastcgi_script_name будет добавляться после URI, если URI заканчивается слэшом.
+
  # Имя файла, который при создании переменной $fastcgi_script_name будет добавляться после URI, если URI заканчивается слэшом.
 
  fastcgi_index index.php;
 
  fastcgi_index index.php;
 
   
 
   
  ## Передавать ли клиенту ответы FastCGI-сервера с кодом больше либо равным 300.
+
  # Передавать ли клиенту ответы FastCGI-сервера с кодом больше либо равным 300.
 
  #fastcgi_intercept_errors on;
 
  #fastcgi_intercept_errors on;
 
   
 
   
  ## Добавить параметры из /etc/nginx/fastcgi_param.
+
  # Добавить параметры из /etc/nginx/fastcgi_param.
 
  include fastcgi_params;
 
  include fastcgi_params;
 
   
 
   
  ## Путь к скрипту, который будет передан в PHP-FPM.
+
  # Путь к скрипту, который будет передан в PHP-FPM.
## При использовании chroot окружения нужно указывать относительный путь.
+
 
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 +
# При использовании chroot окружения нужно указывать путь по-другому.
 +
#fastcgi_param SCRIPT_FILENAME  /{имя домена}$fastcgi_script_name;
 
   
 
   
  ## Закрывать ли соединение с FastCGI-сервером в случае, если клиент закрыл соединение, не дождавшись ответа.
+
  # Закрывать ли соединение с FastCGI-сервером в случае, если клиент закрыл соединение, не дождавшись ответа.
 
  fastcgi_ignore_client_abort off;
 
  fastcgi_ignore_client_abort off;
 
и добавить в настройки виртуального хоста блок (<tt>{путь к файлу сокета}</tt> нужно заменить своим значением)
 
и добавить в настройки виртуального хоста блок (<tt>{путь к файлу сокета}</tt> нужно заменить своим значением)
  ## Настройки обработки PHP-скриптов.
+
  # Настройки обработки PHP-скриптов.
 
  location ~ \.php$ {
 
  location ~ \.php$ {
     ## Подключение шаблона с настройками PHP.
+
     # Подключение шаблона с настройками PHP.
 
     include /etc/nginx/templates/php;
 
     include /etc/nginx/templates/php;
 
      
 
      
     ## Путь к UNIX-сокету PHP-FPM.
+
     # Путь к UNIX-сокету PHP-FPM.
 
     fastcgi_pass unix:{путь к файлу сокета}
 
     fastcgi_pass unix:{путь к файлу сокета}
 
  }
 
  }
Строка 268: Строка 239:
  
 
Например (<tt>{адрес почты}</tt> и <tt>{имя сайта}</tt> нужно заменить своими значениями)
 
Например (<tt>{адрес почты}</tt> и <tt>{имя сайта}</tt> нужно заменить своими значениями)
  ## Путь к sendmail и параметр, указывающий адрес почты администратора сайта.  
+
  # Путь к sendmail и параметр, указывающий адрес почты администратора сайта.  
 
  fastcgi_param PHP_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f{адрес почты}";
 
  fastcgi_param PHP_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f{адрес почты}";
 
   
 
   
  ## Директории с файлами сайта, файлами сессий и временными файлами.
+
  # Директории с файлами сайта, файлами сессий и временными файлами.
  fastcgi_param PHP_ADMIN_VALUE "open_basedir = /var/www/{имя сайта}/:/tmp/:/";
+
  fastcgi_param PHP_ADMIN_VALUE "open_basedir = /var/www/{имя сайта}/:/var/www/{имя сайта}/save/:/var/www/{имя сайта}/tmp/";
 
   
 
   
  ## Ограничение памяти для выполнения скриптов.
+
  # Ограничение памяти для выполнения скриптов.
 
  fastcgi_param PHP_VALUE "memory_limit = 256M";
 
  fastcgi_param PHP_VALUE "memory_limit = 256M";
 
   
 
   
  ## Максимальное время в секундах, в течение которого скрипт должен полностью загрузиться.
+
  # Максимальное время в секундах, в течение которого скрипт должен полностью загрузиться.
 
  fastcgi_param PHP_VALUE "max_execution_time = 60";
 
  fastcgi_param PHP_VALUE "max_execution_time = 60";
 
Если при выполнении скриптов возникает ошибка 502, то может помочь добавление
 
fastcgi_buffer_size 16k;
 
fastcgi_buffers 4 16k;
 
в настройки виртуального сервера.
 
 
=== node.js ===
 
Для работы с сервером, основанным на [[node.js]] достаточно создать шаблон '''/etc/nginx/templates/nodejs_{имя сервера}''' (пример для сервера, основанного на [[node.js/Express|Express]]; <tt>{имя сервера}</tt>, <tt>{путь к корневой директории проекта}</tt>, <tt>{номер порта}</tt> и {путь к unix-сокету} нужно заменить подходящими значениями):
 
<pre>## Директория с файлами сайта.
 
root {путь к корневой директории проекта}/public;
 
 
## Файл лога для проблем доступа.
 
access_log {путь к корневой директории проекта}/access.log;
 
 
## Файл лога для ошибок.
 
error_log {путь к корневой директории проекта}/error.log;
 
 
## Передача node.js обработки запросов не статического контента.
 
location ~ ^/(?!css|images|js|favicon.ico) {
 
    ## Для сервера, слушающего порт.
 
    #proxy_pass http://localhost:{номер порта};
 
    ## Для сервера, слушающего unix-сокет.
 
    proxy_pass http://unix:{путь к unix-сокету}:$uri$is_args$args;
 
 
    proxy_http_version 1.1;
 
    proxy_set_header Upgrade $http_upgrade;
 
    proxy_set_header Connection 'upgrade';
 
    proxy_set_header Host $host;
 
    proxy_cache_bypass $http_upgrade;
 
}
 
 
## Отключить логи, связанные с отсутствием иконки сайта.
 
location = /favicon.ico {
 
    log_not_found off;
 
    access_log off;
 
}
 
 
## Доступ к файлу с настройками для поисковых роботов.
 
location = /robots.txt {
 
    allow all;
 
    log_not_found off;
 
    access_log off;
 
}</pre>
 
и подключить этот файл в настройках каждого виртуального хоста, работающего с рассматриваемым сервером [[node.js]].
 
  
 
=== Ссылки ===
 
=== Ссылки ===
Строка 336: Строка 263:
 
[[Категория:База знаний]]
 
[[Категория:База знаний]]
 
[[Категория:Linux]][[Категория:Ubuntu]]
 
[[Категория:Linux]][[Категория:Ubuntu]]
[[Категория:nginx]][[Категория:PHP]][[Категория:node.js]][[Категория:MySQL]]
 

Пожалуйста, учтите, что любой ваш вклад в проект «K.Wiki» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. K.Wiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Источник — «https://chuvilin.pro/wiki/Nginx»