Nginx, как частный пример сервера.
NGINX — это веб-сервер и почтовый прокси, который работает под управлением операционных систем семейства Linux/Unix и Microsoft.
Область применения
Веб-сервер применяется в следующих ситуациях:
- ыделенный порт или IP-адрес. Если на сервере присутствует большое количество статичного материала (картинки, тексты и т. д.) либо файлов для загрузки пользователями, то Nginx используют, чтобы выделить под данные операции отдельный IP-адрес либо порт. Таким образом нагрузка на сервер распределяется.
- Прокси-сервер. Когда пользователь загружает страницу сайта, на которой расположен статичный контент, Nginx сначала кэширует данные у себя, а потом возвращает результат. При следующих запросах данной страницы ответ происходит в разы быстрее.
- Распределение нагрузки. При запросе страницы сайта, пользователю выдается ответ в синхронной последовательности. Nginx использует асинхронный режим. Все запросы обрабатываются на разных этапах. Такой подход повышает скорость обработки.
- Почтовый сервер. Поскольку в веб-сервер встроены механизмы аутентификации, то его часто используют для перенаправления на почтовые сервисы после прохождении авторизации клиентом.
Установка сервера
sudo apt install nginx
Команды для взаимодействия с демоном
Запустить/остановить демон nginx
systemctl start/stop nginx
Включить/выключить автоматический запуск, --now
- говорит не ждать следующий загрузки системы, а выполнить условие прямо сейчас.
systemctl disable/enable nginx --now
Проверить конфигурацию на правильность.
nginx -t
При изменении конфигурации nginx требуется перезагрузить.
Пример конфигурации:
Внимание! Конфиг ниже приведет в упрощенном виде.
worker_processes auto;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
use epoll;
}
http {
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
client_max_body_size 1G;
include /etc/nginx/mime.types;
server {
listen 80;
server_name test.ru;
# gzip begin
gzip on;
gzip_disable "msie6";
# gzip end
location /static/ {
root /code/public;
expires max;
try_files $uri$args $uri =404;
}
location / {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/htpasswd;
proxy_pass http://web:8080;
proxy_set_header Host $http_host;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
}
}
}
Ключевые слова, важные для нас:
- http - общие настройки сервера применяемые
- server - настройки применяемые исключительно для конкретного сервера.
- server_name - название сервера которое мы будем использовать
- listen - порт на котоом будет запущен nginx
- location - настройка различных префиксов, которые в свою очередь могут перенаправлять запросы в различные сервисы.
- include - включает конфиг, расположенный по указанному адресу