2024-12-09 21:57:44 +03:00

156 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

- файл `/etc/nginx/nginx.conf`:
```
http {
# Включение основной конфигурации из conf.d
include /etc/nginx/conf.d/*.conf;
# Включение дополнительных конфигураций из extra-conf.d
include /etc/nginx/extra-conf.d/*.conf;
}
```
- Блок **http**
Блок `http` используется для настроек на уровне всего HTTP-сервера и обычно располагается в основном файле конфигурации `/etc/nginx/nginx.`conf. Он содержит общие настройки, которые могут применяться ко всем server блокам (виртуальным хостам) внутри него.
Примеры того, что может быть настроено в http блоке:
- Глобальные параметры для всех сайтов:
- Настройки кеширования, сжатия, таймаутов, буферов.
- Настройки логирования (например, access_log, error_log).
- Параметры загрузки статических файлов.
- Общие правила для обработки MIME-типов и дефолтных заголовков.
- Определение подключаемых конфигураций:
- Через директивы include, например, для файлов в conf.d/ и extra-conf.d/.
- Настройки для upstream
- Создание блоков upstream для балансировки нагрузки между несколькими бэкэндами (например, для проксирования запросов к пулу приложений).
```
http {
# Логирование запросов
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
# Сжатие
gzip on;
gzip_types text/plain text/css application/json application/javascript;
# Пулы серверов для балансировки нагрузки
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
# Подключение всех файлов в conf.d/
include /etc/nginx/conf.d/*.conf;
}
```
- Блок **server**
Блок server используется для настройки конкретного хоста (сайта) или группы настроек для определенного домена или IP-адреса. В одном http блоке может быть несколько server блоков, каждый из которых настраивает определенный виртуальный хост, обслуживающий свои уникальные домены, поддомены, или порты.
Домен и порт:
Директивы server_name и listen, чтобы указать, на каких доменах и портах сервер принимает запросы.
Обработка запросов:
Можно настроить обработку корневых запросов (/), редиректы и маршрутизацию.
Проксирование запросов на бэкенд:
Настройка обратного прокси-сервера через директиву proxy_pass.
Доступ к статическим файлам:
Использование директивы root или alias для указания расположения статических файлов.
```
server {
listen 80;
server_name example.com;
root /var/www/example.com;
# Настройка проксирования для API-запросов
location /api/ {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# Страница ошибки 404
error_page 404 /404.html;
location = /404.html {
internal;
}
}
```
Блок http: Настройки, определенные здесь, применяются ко всем server блокам, если они не переопределены внутри конкретного server блока. Например, включение сжатия в http блоке (gzip on;) будет автоматически применяться ко всем виртуальным хостам.
Блок server: Определяет параметры для конкретных сайтов или доменов.
---
- `/etc/nginx/sites-available:` В этой директории хранятся файлы конфигураций для всех доступных сайтов или приложений. Каждый файл здесь обычно соответствует одному сайту или домену, и содержит настройки для конкретного виртуального хоста.
- `/etc/nginx/sites-enabled`: Эта директория содержит символические ссылки на файлы из sites-available. Файлы в sites-enabled представляют собой активированные сайты. Nginx загружает только те сайты, для которых конфигурационные файлы находятся в sites-enabled.
для активации сайта:
`sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/`
для деактивации:
`sudo rm /etc/nginx/sites-enabled/example.conf`
`sudo systemctl reload nginx` - необходимо перезагрузить nginx
```
/etc/nginx/
├── nginx.conf
├── sites-available/
│ ├── example.com
│ └── example.org
└── sites-enabled/
├── example.com -> /etc/nginx/sites-available/example.com
```
потом `sites-enabled` подключается к `/etc/nginx/nginx.conf`
```
http {
# Общие настройки HTTP
include /etc/nginx/sites-enabled/*;
}
```
---
`error_page 500 502 503 504 /50x.html;`
---
```
upstream server-group {
server srv-server1.bft.local:8080;
server srv-server2.bft.local:8080;
keepalive 60;
}
```
---
```
location / {
return 301 https://srvname.test.srv/app;
}
```
`return <status_code> [<url>];`
```
error_page 500 502 503 504 = @custom_error;
location @custom_error {
return 302 http://example.com/error-page;
}
```
---