Если вы видите что-то необычное, просто сообщите мне. Skip to main content

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 - включает конфиг, расположенный по указанному адресу