Инструменты пользователя

Инструменты сайта


linux:nginx

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:nginx [2024/09/29 16:07]
admin
linux:nginx [2024/12/29 06:31] (текущий)
admin
Строка 2: Строка 2:
  
 ===== Сведения ===== ===== Сведения =====
 +
 +<details>
 +<summary>:!: Общее</summary>
 Эффективное использование ресурсов, отзывчив под нагрузкой.\\ Эффективное использование ресурсов, отзывчив под нагрузкой.\\
 Используется как веб так и прокси сервер.\\ Используется как веб так и прокси сервер.\\
Строка 7: Строка 10:
  
  
-=== Динамический контент ===+**Динамический контент**\\
 Nginx не имеет возможности самостоятельно обрабатывать запросы к динамическому контенту (например php), для этого он передает запрос внешнему процессу (например [[:linux:php|php-fpm]]) и ожидает результата. \\ Nginx не имеет возможности самостоятельно обрабатывать запросы к динамическому контенту (например php), для этого он передает запрос внешнему процессу (например [[:linux:php|php-fpm]]) и ожидает результата. \\
 На каждый запрос создается отдельное соединение с процессом. (плюс в экономии на статических запросах).\\ На каждый запрос создается отдельное соединение с процессом. (плюс в экономии на статических запросах).\\
Строка 13: Строка 16:
  
  
-=== Интерпретация запросов ===+**Интерпретация запросов**\\
 В отличии от сервера [[:linux:apache|Apache]], Nginx интерпретирует запросы в первую очередь как URL а не как пути в файловой системе.\\ В отличии от сервера [[:linux:apache|Apache]], Nginx интерпретирует запросы в первую очередь как URL а не как пути в файловой системе.\\
 Во многом из-за своего Альтер Эго в роли прокси сервера, из-за чего и не реализует поддержку файлов .thaccess. Во многом из-за своего Альтер Эго в роли прокси сервера, из-за чего и не реализует поддержку файлов .thaccess.
  
  
-=== Модули ===+**Модули**\\
 В отличии от [[:linux:apache|Apache]], в Nginx модули не являются динамическими, а должны компилироваться с ядром сервера. В отличии от [[:linux:apache|Apache]], в Nginx модули не являются динамическими, а должны компилироваться с ядром сервера.
  
  
-=== Совместное использование с Apache ===+**Совместное использование с Apache**\\
 Очень частая практика использования обоих серверов вместе, Nginx ставится в качестве реверс-прокси, т.е. фронтенд а [[:linux:apache|Apache]] бэкенд.\\ Очень частая практика использования обоих серверов вместе, Nginx ставится в качестве реверс-прокси, т.е. фронтенд а [[:linux:apache|Apache]] бэкенд.\\
 Nginx самостоятельно обслуживает статический контент а динамический передает [[:linux:apache|Apache]].\\ Nginx самостоятельно обслуживает статический контент а динамический передает [[:linux:apache|Apache]].\\
 в такой конфигурации можно ставить несколько бэкендов, таким образом хорошо масштабировать систему. в такой конфигурации можно ставить несколько бэкендов, таким образом хорошо масштабировать систему.
 +</details>
  
  
Строка 126: Строка 130:
 } }
 </code> </code>
- 
- 
-==== Настройка SSL сертификата ==== 
-FIXME☝ 
  
  
Строка 268: Строка 268:
  
  
-==== Context ====+==== Context (блоки) ====
 Конфиг содержит древовидную структуру, определен наборами фигурных скобок, эти области называются контекстами. Контексты вкладываются друг в друга, заданные директивы наследуют вложенными контекстами, могут переопределяться\\ Конфиг содержит древовидную структуру, определен наборами фигурных скобок, эти области называются контекстами. Контексты вкладываются друг в друга, заданные директивы наследуют вложенными контекстами, могут переопределяться\\
  
-=== Main ===+<details> 
 +<summary>:!: Основные директивы</summary> 
 + 
 +**Main**\\
 Контекст **Main** базовый, глобальный, по умолчанию присутствует всегда, директива вне контекстов, содержится в контексте main\\ Контекст **Main** базовый, глобальный, по умолчанию присутствует всегда, директива вне контекстов, содержится в контексте main\\
  
  
-=== Events ===+**Events**\\
 Находится в main, определяет глобальные параметры, влияющие на то как Nginx обрабатывает соединения. В конфете может быть только один контекст Events\\ Находится в main, определяет глобальные параметры, влияющие на то как Nginx обрабатывает соединения. В конфете может быть только один контекст Events\\
 Как правило метод для обработки соединения выбирается автоматически, платформа выбирает наиболее эффективный из доступных\\ Как правило метод для обработки соединения выбирается автоматически, платформа выбирает наиболее эффективный из доступных\\
  
  
-=== Http ===+**Http**\\
 Содержит все директивы и другие контексты, необходимые для обработки соединений HTTP или HTTPS\\ Содержит все директивы и другие контексты, необходимые для обработки соединений HTTP или HTTPS\\
 Так же является дочерним от main, одноранговые с events, не вкладываются друг в друга\\ Так же является дочерним от main, одноранговые с events, не вкладываются друг в друга\\
Строка 287: Строка 290:
  
  
-=== Server ===+**Server**\\
 Обычно объявляется внутри http, может быть объявлен несколько раз. Виртуальный хост, набор параметров для обработки запросов, разные хосты для разных запросов например\\ Обычно объявляется внутри http, может быть объявлен несколько раз. Виртуальный хост, набор параметров для обработки запросов, разные хосты для разных запросов например\\
  
Строка 295: Строка 298:
  
  
-=== Location ===+**Location**\\
 Выбирается исходя из клиентского запроса, алгоритмом сопоставления\\ Выбирается исходя из клиентского запроса, алгоритмом сопоставления\\
 Так же, их может быть несколько, могут быть вложены друг в друга (что тоже может быть полезно). Определение находится в строке заголовка\\  Так же, их может быть несколько, могут быть вложены друг в друга (что тоже может быть полезно). Определение находится в строке заголовка\\ 
Строка 302: Строка 305:
  
  
-=== upstream ===+**upstream**\\
 Используется для определения пула серверов для проксирования. Находится в блоке "http" (только ли ?)\\ Используется для определения пула серверов для проксирования. Находится в блоке "http" (только ли ?)\\
  
Строка 308: Строка 311:
  
  
-=== Другие ===+**Другие**\\
 **if** \\ **if** \\
 Позволяет настроить условное ветвление\\ Позволяет настроить условное ветвление\\
Строка 315: Строка 318:
 Позволяет задать ограничения на использование HTTP-методов, можно разрешать определенным адресам например\\ Позволяет задать ограничения на использование HTTP-методов, можно разрешать определенным адресам например\\
  
 +</details>
  
  
Строка 361: Строка 365:
 === Журнал доступа === === Журнал доступа ===
 В журнал доступа (**access_log**) регистрирует каждый запрос клиента.\\ В журнал доступа (**access_log**) регистрирует каждый запрос клиента.\\
 +<details>
 +<summary>:!: </summary>
 <code bash> <code bash>
 http  http 
Строка 373: Строка 379:
 } }
 </code> </code>
 +
 +Перенаправление логов в stdout\\
 +"AccessLog" обычно в хосте, errors в общем блоке\\
 +Даже при такой конфигурации, error почему то все равно создает файл в "/var/log/nginx", потому что при запуске используется дефолтный, иначе как сообщить если ошибка в конфигурации\\
 +<code bash>
 +(...)
 +error_log /dev/stdout error;
 +
 +    http {
 +      server {
 +        access_log /dev/stdout;
 +        (...)
 +      }
 +    }
 +</code>
 +</details>
 +
  
 Если формат не указан явно, используется формат по умолчанию: Если формат не указан явно, используется формат по умолчанию:
Строка 383: Строка 406:
 Журнал можно отключить: Журнал можно отключить:
 <code bash>access_log  off;</code> <code bash>access_log  off;</code>
 +
  
  
Строка 396: Строка 420:
   * **alert** – Оповещения. Действие должно быть принято немедленно.   * **alert** – Оповещения. Действие должно быть принято немедленно.
   * **emerg** – Чрезвычайная ситуация. Система находится в нерабочем состоянии.   * **emerg** – Чрезвычайная ситуация. Система находится в нерабочем состоянии.
 +
 +
 +
 +==== Параметры ====
 +
 +<details>
 +<summary>:!: Перечень</summary>
 +
 +**worker_processes** - 
 +
 +**worker_connections** - 
 +
 +**worker_cpu_affinity** - 
 +
 +**** - 
 +
 +
 +</details>
  
  
Строка 496: Строка 538:
 </code> </code>
  
 +
 +SSL конфиг
 +<code bash>
 +server{
 +        listen 443 ssl;
 +        server_name my-super-host;
 +
 +        ssl_certificate /etc/nginx/certs/test.pem;
 +        ssl_certificate_key /etc/nginx/certs/test.key;
 +
 +        location / {
 +                root /usr/share/nginx/html;
 +                index index.html;
 +        }
 +
 +        location = /50x.html {
 +                root   /usr/share/nginx/html;
 +        }
 +}
 +
 +</code>
 +
 +
 +Генерация самоподписанного серта
 +<code bash>
 +openssl req -x509 -newkey rsa:4096 -nodes -sha256 -keyout /etc/ssl/private/ssl-cert-snakeoil.key -out /etc/ssl/certs/ssl-cert-snakeoil.pem -days 3650 -subj "/CN=<$PUBLIC_IP_ADDRESS>"
 +</code>
  
 </details> </details>
  
 +
 +
 +<details>
 +<summary>:!: Расположение tmp</summary>
 +
 +<code bash>
 +    http {
 +      server {
 +        (...)
 +        client_body_temp_path /deployments/nginx/tmp;
 +        proxy_temp_path /deployments/nginx/tmp;
 +        fastcgi_temp_path /deployments/nginx/tmp;
 +        uwsgi_temp_path /deployments/nginx/tmp;
 +        scgi_temp_path /deployments/nginx/tmp;
 +      }
 +    }
 +</code>
 +</details>
  
  
linux/nginx.1727626028.txt.gz · Последнее изменение: 2024/09/29 16:07 — admin