Статьи с тегом:Nginx

HTTP-редиректы в Nginx
Полное руководство по настройке переадресаций в Nginx
Добавление модулей nginx в Linux
Описание инструкции по добавлению модулей Nginx в Linux (Debian/Ubuntu/CentOS)
Как узнать версию PHP и другого ПО по SSH
Как узнать версию PHP и другого ПО из консоли на вашем VPS/выделенном сервере
Кэширование в Nginx
Как настроить кэширование страниц для ускорения сайта и снижения нагрузки.
Мониторинг Nginx
Описание работы утилиты Ngxtop которая мониторит access-логи веб-сервера Nginx
Настройка кэширования и сжатия статических файлов в Nginx
Как ускорить загрузку сайта и снизить нагрузку на сервер.
Настройка параметров-кэширование и сжатие в VestaCP
Как включить кэширование статических файлов для ускорения загрузки сайта и снижения нагрузки на сервер
Ограничение доступа к сайту через Nginx
Как настроить фильтрацию по IP, парольную защиту и блокировку нежелательных запросов.
Ограничение нагрузки на сайт через Nginx
Как настроить ограничения соединений, запросов и скорости передачи данных в Nginx.
Ошибки Nginx и как их исправить
Как исправить ошибки Nginx: 502, 504, 413.
Установка модуля PageSpeed для Nginx в Debian 9
Руководство по установке модуля PageSpeed который предназначенный для автоматической оптимизации работы сайта путём сокращения времени загрузки сайта в браузере.
Фильтрация трафика в Nginx с помощью GeoIP
Пошаговое руководство по ограничению доступа к сайту по странам с использованием модуля GeoIP в Nginx.
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам
основного сервера добавьте:\r\n```nginx\r\nlocation ~ \\.php$ {\r\n fastcgi_pass unix:/run/php/php8.1-fpm.sock; # или ваш сокет\r\n fastcgi_index index.php;\r\n include fastcgi_params;\r\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\r\n\r\n fastcgi_cache fcgi_cache;\r\n fastcgi_cache_valid 200 301 302 60m; # кэшируем успешные ответы на 60 минут\r\n fastcgi_cache_valid 404 1m;\r\n fastcgi_cache_bypass $http_cookie; # не кэшируем при наличии куки\r\n fastcgi_no_cache $http_cookie; # не сохраняем в кэш при наличии куки\r\n}\r\n```\r\n\r\n### Полезные замечания\r\n- Кэширование не должно применяться к страницам с авторизацией, личным кабинетом, корзиной — используйте `fastcgi_cache_bypass` и `fastcgi_no_cache` для таких URI.\r\n- Для динамических сайтов (Bitrix, WordPress) часто кэшируют только GET-запросы без куки.\r\n- После изменений перезапустите NGINX:\r\n```Bash\r\nsudo nginx -t # проверка конфигурации\r\nsudo systemctl reload nginx\r\n```\r\n\r\n- Очистка кэша вручную (если требуется):\r\n```Bash\r\nsudo rm -rf /var/cache/nginx/*\r\nsudo rm -rf /var/cache/nginx-fcgi/*\r\n```\r\n\r\n!!! info Помощь \r\n Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через [систему тикетов](/my/tickets/) — мы обязательно вам поможем!","images":[],"updated_at":"2026-02-04T17:19:01+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/91/change/","children":[]},{"id":92,"title":"Мониторинг Nginx","slug":"monitoring-nginx","priority":0,"summary":"Описание работы утилиты Ngxtop которая мониторит access-логи веб-сервера Nginx","tags":[{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":81,"name":"Мониторинг","slug":"monitoring","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"Утилита **Ngxtop** мониторит access-логи и выводит их в консоль в стиле известной программы [top](https://fornex.com/help/top-command/). \r\n\r\nУстановка выполняется следующим образом:\r\n```\r\n# pip install ngxtop\r\n```\r\n\r\nСинтаксис использования утилиты:\r\n\r\n```\r\nngxtop [options]\r\nngxtop [options] (print|top|avg|sum) \r\n```\r\n\r\nСписок всех доступных опций можно посмотреть командой:\r\n\r\n```\r\n# ngxtop --help\r\n```\r\n\r\nПо умолчанию, Ngxtop самостоятельно определяет местоположение access-лога Nginx из конфигурационного файла **/etc/nginx/nginx.conf**. Если таких логов несколько, необходимо будет выбрать с каким именно логом работать:\r\n\r\n```\r\n# ngxtop\r\nMultiple access logs detected in configuration:\r\n1. /var/log/nginx/access502.log\r\n2. /var/log/nginx/access.api.log\r\n3. /var/log/nginx/access.img.log\r\n4. /var/log/nginx/access.log\r\n5. /var/log/nginx/access404.log\r\n```\r\n\r\nЧтобы посмотреть запросы со статусом 404 можно воспользоваться командой:\r\n\r\n```\r\n# ngxtop -i 'status == 404' print request status\r\n```\r\n\r\nрезультат выполнения:\r\n\r\n```\r\nrunning for 130 seconds, 150 records processed: 1.15 req/sec\r\n\r\nrequest, status:\r\n|request | status |\r\n|-----------------------------------------------------+----------|\r\n| GET /browserconfig.xml HTTP/1.1 | 404 |\r\n| GET /employer/my/archive/2107569/98483600/ HTTP/1.1 | 404 |\r\n| GET /employer/my/archive/2107569/98483867/ HTTP/1.1 | 404 |\r\n| GET /jobs/1045534/ HTTP/1.1 | 404 |\r\n| GET /jobs/1230564/ HTTP/1.1 | 404 |\r\n| GET /jobs/1254320/ HTTP/1.1 | 404 |\r\n| GET /jobs/1304769/ HTTP/1.1 | 404 |\r\n| GET /jobs/1326496/ HTTP/1.1 | 404 |\r\n```\r\n\r\nПосмотреть IP-адреса, с которых приходит больше всего запросов можно командой:\r\n\r\n```\r\n# ngxtop top remote_addr\r\n```\r\n\r\nрезультат выполнения:\r\n\r\n```\r\nrunning for 8 seconds, 1759 records processed: 217.15 req/sec\r\n\r\ntop remote_addr\r\n| remote_addr | count |\r\n|-----------------+---------|\r\n| 92.60.184.91 | 45 |\r\n| 66.249.78.10 | 42 |\r\n| 77.120.121.122 | 42 |\r\n| 66.249.89.63 | 28 |\r\n| 91.206.201.152 | 19 |\r\n| 37.229.17.176 | 17 |\r\n| 77.87.193.40 | 17 |\r\n| 157.55.39.7 | 16 |\r\n| 188.115.135.245 | 16 |\r\n| 89.184.80.168 | 16 |\r\n```","images":[],"updated_at":"2025-03-23T18:08:00+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/92/change/","children":[]},{"id":90,"title":"Настройка кэширования и сжатия статических файлов в Nginx","slug":"caching-static-files-nginx","priority":0,"summary":"Как ускорить загрузку сайта и снизить нагрузку на сервер.","tags":[{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":76,"name":"Виртуальный хостинг","slug":"virtual-hosting","icon":"https://fornex.com/media/dream_tag_icon/browser.svg"},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"Правильная настройка кэширования и сжатия статических файлов (изображения, CSS, JavaScript) позволяет значительно ускорить загрузку страниц, уменьшить потребление трафика и снизить нагрузку на сервер.\r\n\r\nВ этой статье мы разберём два важных механизма Nginx: \r\n- Директиву **expires** (управление временем кэширования в браузере) \r\n- Включение **GZIP-сжатия** для текстовых файлов\r\n\r\n### 1. Настройка кэширования с помощью expires\r\n\r\nДиректива `expires` указывает браузеру, сколько времени файл можно хранить в кэше без повторного запроса к серверу.\r\n\r\nОткройте конфигурационный файл вашего сайта (обычно `/etc/nginx/conf.d/vhost.conf` или аналогичный) и добавьте блок `location` для статических файлов:\r\n\r\n```nginx\r\nlocation ~* \\.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot|mp4|webm|ogg|mp3|pdf|zip)$ {\r\n expires 30d; # кэш на 30 дней\r\n add_header Cache-Control \"public\";\r\n access_log off; # отключаем логи для статики (экономия ресурсов)\r\n}\r\n```\r\n\r\n**Рекомендуемые значения** expires:\r\n- Изображения, шрифты, иконки: `30d` или `1y`\r\n- CSS и JavaScript: `7d` — `30d` (если часто меняются — меньше)\r\n- Файлы, которые почти не меняются: `1y`\r\n\r\n### 2. Включение GZIP-сжатия\r\nGZIP значительно уменьшает размер текстовых файлов (HTML, CSS, JS, SVG и др.).\r\nДобавьте следующие строки в блок `server {}` вашего виртуального хоста:\r\n```nginx\r\nserver {\r\n ...\r\n\r\n gzip on;\r\n gzip_disable \"msie6\";\r\n gzip_vary on;\r\n gzip_proxied any;\r\n gzip_comp_level 6; # уровень сжатия (1-9)\r\n gzip_buffers 16 8k;\r\n gzip_http_version 1.1;\r\n gzip_min_length 256;\r\n gzip_types\r\n text/plain\r\n text/css\r\n text/xml\r\n text/javascript\r\n application/javascript\r\n application/json\r\n application/xml\r\n application/rss+xml\r\n image/svg+xml;\r\n}\r\n```\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### 3. Применение настроек для всех сайтов (шаблон)\r\nЕсли вы хотите автоматически применять эти настройки ко всем виртуальным хостам, создайте файл шаблона:\r\n```nginx\r\nsudo nano /usr/local/ispmgr/etc/server.templ\r\n```\r\n\r\nДобавьте в него:\r\n```nginx\r\nlocation ~* \\.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot)$ {\r\n expires 30d;\r\n add_header Cache-Control \"public\";\r\n access_log off;\r\n}\r\n```\r\n\r\nПосле изменения шаблона перезапустите Nginx:\r\n```nginx\r\nsudo systemctl restart nginx\r\n```\r\n\r\n### Полезные советы\r\n- После изменения конфигурации всегда проверяйте синтаксис: `sudo nginx -t`\r\n- Для максимальной производительности комбинируйте `expires` с заголовком `Cache-Control: public`.\r\n- Не ставьте слишком большой `expires` (больше года) на часто обновляемые файлы (CSS/JS), иначе пользователи долго не увидят изменения.\r\n- На VPS и выделенных серверах вы можете дополнительно настроить browser caching, FastCGI cache и proxy_cache для ещё большей оптимизации.\r\n\r\n!!! info Помощь \r\n Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через [систему тикетов](/my/tickets/) — мы обязательно вам поможем!","images":[],"updated_at":"2026-04-01T16:36:29+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/90/change/","children":[]},{"id":17,"title":"Настройка параметров-кэширование и сжатие в VestaCP","slug":"caching-compression-vesta","priority":0,"summary":"Как включить кэширование статических файлов для ускорения загрузки сайта и снижения нагрузки на сервер","tags":[{"id":13,"name":"Панель управления","slug":"control-panel","icon":null},{"id":46,"name":"Vesta CP","slug":"vesta-cp","icon":null},{"id":71,"name":"PuTTY","slug":"putty","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":95,"name":"SSH","slug":"ssh","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"**Expires** отвечает за то, как долго кэш является актуальным, и браузер может использовать кешированные ресурсы, не запрашивая у сервера их новую версию.\r\n\r\nЗайдем в раздел **Сервер → nginx → configure**\r\n\r\n![file](/media/article/img/image-1527769914939.png)\r\n\r\n\r\n![file](/media/article/img/Выделение_987_2.png)\r\n\r\nПосле внесения изменений в конфигурационный файл нужно установить галочку **Перезапустить** и нажать кнопку **Сохранить**\r\n\r\n\r\nтакже вы можете выполнить вход по [SSH](https://fornex.com/help/ssh-to-vps/) к серверу и отредактировать конфигурационный файл **nginx.conf** который находится в **/etc/nginx/**, найдите конфигурационный блок server **{}**. В данном конфигурационном блоке есть раздел **location** для обработки статических документов.\r\n\r\n\r\nПример конфигурации Nginx для контроля Expires\r\n\r\n```\r\nserver {\r\n #...\r\n location ~* \\.(gif|ico|jpe?g|png)(\\?[0-9]+)?$ {\r\n expires 1w;\r\n }\r\n\r\n location ~* \\.(css|js)$ {\r\n expires 1d;\r\n }\r\n #...\r\n}\r\n```\r\n\r\nгде **expires** — это количество дней, сколько кэш статических файлов будет храниться.\r\n\r\n\r\n**Сжатие страниц в связке Nginx+Apache**\r\n\r\nЧтоб включить сжатие на поддерживающих эту технологию браузерах, достаточно создать пустой файл **.htdeflate** в корневой директории сайта.\r\n\r\nДля поддержания работы такого метода необходимо добавить следующие строки в файл виртуального хоста:\r\n\r\n```\r\nset $root /home/USERNAME/www;\r\nset $deflate \"${root}/.htdeflate\";\r\n\r\nlocation ~* ^.+\\.(css|js)$ {\r\n root $root;\r\n if ( -f $deflate ) {\r\n gzip on;\r\n }\r\n gzip_disable msie6;\r\n gzip_vary on;\r\n gzip_proxied any;\r\n gzip_comp_level 9;\r\n gzip_buffers 16 8k;\r\n gzip_http_version 1.1;\r\n gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;\r\n}\r\n```\r\n\r\n**Если у Вас возникли трудности в настройке или появились дополнительные вопросы, вы всегда можете обращаться в нашу службу поддержки через [систему тикетов](https://fornex.com/my/tickets/)**","images":[{"id":1342,"file":"https://fornex.com/media/article/img/image-1527769914939.png","created":"2018-05-31T15:31:55+03:00"},{"id":1984,"file":"https://fornex.com/media/article/img/%D0%92%D1%8B%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_987_2.png","created":"2018-06-15T16:31:44+03:00"}],"updated_at":"2025-10-23T17:25:43+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/17/change/","children":[]},{"id":69,"title":"Ограничение доступа к сайту через Nginx","slug":"deny-allow-nginx","priority":0,"summary":"Как настроить фильтрацию по IP, парольную защиту и блокировку нежелательных запросов.","tags":[{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"При работе с веб-сервером важно контролировать, кто и к каким ресурсам имеет доступ. Nginx предоставляет гибкие инструменты для решения этой задачи: от простой блокировки по IP до комбинированной защиты с аутентификацией.\r\n\r\n!!! Info Примечание\r\n На [VPS](https://fornex.com/ru/virtual-private-servers/) и [выделенных серверах](https://fornex.com/ru/dedicated-servers/) вы полностью управляете конфигурацией Nginx и можете применять любые из описанных ниже методов.\r\n\r\n### 1. Ограничение доступа к файлам\r\nЧтобы закрыть доступ к служебным директориям, например `.svn`:\r\n```nginx\r\nlocation ~ /.svn/ {\r\n deny all;\r\n}\r\n```\r\n\r\n### 2. Разграничение доступа по IP\r\nДирективы `allow` и `deny` позволяют задать белый список IP-адресов для конкретного раздела сайта:\r\n```nginx\r\nlocation /server-status {\r\n allow 111.111.111.111;\r\n allow 11.11.11.11;\r\n deny all;\r\n}\r\n```\r\n\r\n### 3. Защита паролем (Basic Auth)\r\nДля закрытых разделов можно включить запрос логина и пароля:\r\n```nginx\r\nlocation /admin/ {\r\n auth_basic \"Enter password to access\";\r\n auth_basic_user_file /etc/nginx/basic.auth;\r\n}\r\n```\r\n\r\n### 4. Комбинированная защита: IP + пароль\r\nДиректива `satisfy any` позволяет пропускать пользователя, если он прошёл хотя бы одну проверку — либо по IP, либо по паролю:\r\n```nginx\r\nlocation /admin/ {\r\n satisfy any;\r\n allow 111.111.111.111;\r\n allow 11.11.11.11;\r\n deny all;\r\n\r\n auth_basic \"Enter password to access\";\r\n auth_basic_user_file /etc/nginx/basic.auth;\r\n}\r\n```\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### 5. Защита от запросов к несуществующим файлам\r\nВозвращает `404` при обращении к статическим файлам, которые не существуют на диске:\r\n```nginx\r\nlocation ~ \\.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {\r\n try_files $uri =404;\r\n}\r\n```\r\n\r\n### 6. Перенаправление по IP\r\nNginx может выполнять редирект в зависимости от IP-адреса посетителя:\r\n```nginx\r\nlocation / {\r\n if ($remote_addr != 111.111.111.111) {\r\n return 301 https://$host$request_uri;\r\n }\r\n}\r\n```\r\n\r\n> Все посетители, кроме запросов с IP `111.111.111.111`, будут перенаправлены на `https://$host$request_uri`.\r\n\r\n### 7. Защита от перебора с помощью iptables\r\nЕсли количество запросов с одного IP превышает допустимый порог, iptables временно блокирует его:\r\n```bash\r\niptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \\\r\n -m recent --name bhttp --set\r\niptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \\\r\n -m recent --name bhttp --update --seconds 120 \\\r\n --hitcount 360 -j DROP\r\niptables -A INPUT -p tcp --syn --dport 80 -i eth0 -j ACCEPT\r\n```\r\n\r\n> В данном примере блокируются IP-адреса, с которых поступило более 360 новых соединений за 120 секунд.\r\n\r\n### Применение изменений\r\nПосле редактирования конфигурации Nginx необходимо выполнить перезагрузку:\r\n```bash\r\nsystemctl reload nginx\r\n# или\r\nservice nginx reload\r\n```\r\n\r\n!!! info Помощь \r\n Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через [систему тикетов](/my/tickets/) — мы обязательно вам поможем!","images":[],"updated_at":"2026-03-31T15:09:29+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/69/change/","children":[]},{"id":68,"title":"Ограничение нагрузки на сайт через Nginx","slug":"limit-nginx","priority":0,"summary":"Как настроить ограничения соединений, запросов и скорости передачи данных в Nginx.","tags":[{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":81,"name":"Мониторинг","slug":"monitoring","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"Nginx предоставляет гибкие инструменты для управления нагрузкой — вы можете ограничить количество одновременных соединений, частоту запросов и скорость отдачи данных клиенту. Все настройки вносятся в конфигурационный файл Nginx.\r\n\r\n### 1. Ограничение количества соединений\r\nСначала в секции **http** с помощью директивы `limit_conn_zone` определите ключ и параметры зоны разделяемой памяти для хранения состояний:\r\n```nginx\r\nhttp {\r\n limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;\r\n}\r\n```\r\n\r\nЗатем в нужном блоке **location** укажите имя зоны и максимально допустимое количество соединений с одного IP:\r\n```nginx\r\nlocation /download/ {\r\n limit_conn conn_limit_per_ip 5;\r\n}\r\n```\r\n\r\n### 2. Ограничение количества запросов за единицу времени\r\nВ секции **http** с помощью директивы `limit_req_zone` задайте зону и допустимую частоту запросов:\r\n```nginx\r\nhttp {\r\n limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;\r\n}\r\n```\r\n\r\nВ блоке **location** укажите имя зоны и максимальный размер всплеска запросов (burst):\r\n```nginx\r\nlocation /download/ {\r\n limit_req zone=req_limit_per_ip burst=10;\r\n}\r\n```\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### 3. Ограничение скорости передачи данных клиенту\r\nДиректива `limit_rate` задаёт максимальную скорость отдачи ответа в байтах в секунду **на одно соединение**. Важно учитывать: если клиент использует два соединения одновременно, суммарная скорость будет вдвое выше лимита.\r\n```nginx\r\nlocation /download/ {\r\n limit_rate 50k;\r\n}\r\n```\r\n\r\nДиректива `limit_rate_after` позволяет отдать первые N данных без ограничений, и только после этого применить лимит скорости:\r\n```nginx\r\nlocation /download/ {\r\n limit_rate_after 1m;\r\n limit_rate 50k;\r\n}\r\n```\r\n\r\nВ примере выше первый мегабайт передаётся на полной скорости, после чего скорость ограничивается до 50 КБ/с.\r\n\r\n!!! info Помощь \r\n Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через [систему тикетов](/my/tickets/) — мы обязательно вам поможем!","images":[],"updated_at":"2026-03-30T18:22:49+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/68/change/","children":[]},{"id":87,"title":"Ошибки Nginx и как их исправить","slug":"nginx-errors","priority":0,"summary":"Как исправить ошибки Nginx: 502, 504, 413.","tags":[{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":67,"name":"Dedicated","slug":"dedicated","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":78,"name":"Выделенный сервер","slug":"dedicated-server","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":85,"name":"Ошибки","slug":"errors","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"При работе с веб-сервером Nginx иногда возникают ошибки, которые мешают корректной работе сайта. В этой статье мы разберём наиболее распространённые из них: **502 Bad Gateway**, **504 Gateway Time-out** и **413 Request Entity Too Large**, и покажем, как их устранять на [VPS](https://fornex.com/ru/virtual-private-servers/) или [выделенных серверах](https://fornex.com/ru/dedicated-servers/).\r\n\r\n### 502 Bad Gateway\r\n**Что значит**: Nginx не может получить ответ от бэкенда (PHP-FPM, Apache, Node.js, uWSGI и т.д.). \r\n**Самые частые причины**:\r\n- Сервис бэкенда выключен или упал\r\n- Неправильный путь к сокету или порт в конфиге\r\n- Проблемы с правами доступа к сокету\r\n- Недостаточно памяти/процессов у PHP-FPM\r\n\r\n**Как исправить**:\r\n1. Проверьте статус PHP-FPM (или другого бэкенда):\r\n```bash\r\nsudo systemctl status php-fpm\r\n# или для конкретной версии\r\nsudo systemctl status php8.1-fpm\r\n```\r\n\r\n2. Перезапустите сервис:\r\n```bash\r\nsudo systemctl restart php-fpm\r\n# или php8.1-fpm\r\n```\r\n\r\n3. Проверьте путь к сокету в конфиге Nginx и PHP-FPM:\r\n - Nginx: `fastcgi_pass unix:/run/php/php8.1-fpm.sock;`\r\n - PHP-FPM (/etc/php/8.1/fpm/pool.d/www.conf): `listen = /run/php/php8.1-fpm.sock`\r\n\r\n4. Убедитесь в правильных правах:\r\n```bash\r\nsudo chown www-data:www-data /run/php/php8.1-fpm.sock\r\nsudo chmod 660 /run/php/php8.1-fpm.sock\r\n```\r\n\r\n5. Перезапустите Nginx:\r\n```bash\r\nsudo nginx -t && sudo systemctl reload nginx\r\n```\r\n\r\n### 504 Gateway Time-out\r\n**Что значит**: Nginx ждал ответа от бэкенда слишком долго и прервал соединение. \r\n**Самые частые причины**:\r\n- Долгая обработка PHP-скрипта\r\n- Медленная база данных\r\n- Большая загрузка сервера\r\n\r\n**Как исправить**:\r\n1. Увеличьте таймауты в конфиге сайта (в блоке server или location):\r\n```nginx\r\nproxy_connect_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_read_timeout 300s;\r\nfastcgi_read_timeout 300s; # для PHP\r\n```\r\n\r\n2. Оптимизируйте PHP-FPM (в `/etc/php/8.1/fpm/pool.d/www.conf`):\r\n```ini\r\npm.max_children = 50 # увеличьте по необходимости\r\npm.start_servers = 10\r\npm.min_spare_servers = 5\r\npm.max_spare_servers = 20\r\nrequest_terminate_timeout = 300\r\n```\r\n\r\n3. Перезапустите сервисы:\r\n```bash\r\nsudo systemctl restart php-fpm\r\nsudo systemctl reload nginx\r\n```\r\n\r\n4. Если проблема в конкретном скрипте — оптимизируйте запросы к БД или кэшируйте тяжёлые страницы.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n### 413 Request Entity Too Large\r\n**Что значит**: Клиент пытается загрузить файл больше лимита, установленного в Nginx. По умолчанию — 1 МБ. \r\n**Причины**: загрузка больших файлов (фото, видео, бэкапы, архивы).\r\n\r\n**Как исправить**:\r\n1. В конфиге сайта (или в `/etc/nginx/nginx.conf` в блоке http) увеличьте лимит:\r\n```nginx\r\nclient_max_body_size 64M; # или 128M, 512M, 1G и т.д.\r\n```\r\n\r\n2. Перезапустите Nginx:\r\n```bash\r\nsudo nginx -t && sudo systemctl reload nginx\r\n```\r\n\r\n3. Для PHP также увеличьте лимиты в php.ini (`/etc/php/8.1/fpm/php.ini`):\r\n```ini\r\nupload_max_filesize = 64M\r\npost_max_size = 64M\r\n```\r\n\r\nПерезапустите PHP-FPM:\r\n```bash\r\nsudo systemctl restart php-fpm\r\n```\r\n\r\n### Как перезагрузить Nginx правильно\r\n- Проверка конфигурации (всегда перед перезапуском):\r\n```bash\r\nsudo nginx -t\r\n```\r\n\r\n- Плавная перезагрузка (без прерывания соединений):\r\n```bash\r\nsudo systemctl reload nginx\r\n```\r\n\r\nили\r\n```bash\r\nsudo nginx -s reload\r\n```\r\n\r\nПолный перезапуск (если reload не помог):\r\n```bash\r\nsudo systemctl restart nginx\r\n```\r\n\r\n### Полезные замечания\r\n- Всегда делайте бэкап конфигов перед изменениями: `sudo cp /etc/nginx/nginx.conf` `/etc/nginx/nginx.conf.bak`\r\n- После любых изменений проверяйте логи: `/var/log/nginx/error.log` и `/var/log/nginx/access.log`\r\n\r\n!!! info Помощь \r\n Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через [систему тикетов](/my/tickets/) — мы обязательно вам поможем!","images":[],"updated_at":"2026-02-04T17:18:27+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/87/change/","children":[]},{"id":301,"title":"Установка модуля PageSpeed для Nginx в Debian 9","slug":"install-pagespeed-nginx-debian","priority":0,"summary":"Руководство по установке модуля PageSpeed который предназначенный для автоматической оптимизации работы сайта путём сокращения времени загрузки сайта в браузере.","tags":[{"id":50,"name":"Debian","slug":"debian","icon":null},{"id":80,"name":"Администрирование","slug":"management","icon":null},{"id":83,"name":"Софт","slug":"software","icon":null},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"**Pagespeed** – это модуль Nginx, предназначенный для автоматической оптимизации работы сайта путём сокращения времени загрузки сайта в браузере.\r\n\r\n\r\n\r\n**Загрузка исходного кода и зависимостей**\r\n\r\nДля начала загружаем зависимости Nginx:\r\n@@\r\nsudo apt-get build-dep nginx\r\n@@\r\n\r\nОбновляем список пакетов системы:\r\n\r\n@@\r\nsudo apt-get update\r\n@@\r\n\r\n\r\nДалее, загрузим все необходимые для компиляции и тестирования программы:\r\n\r\n@@\r\nsudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev\r\n@@\r\n\r\nЗатем создадим в домашнем каталоге подкаталог для загрузки пакетов Nginx.\r\n\r\n@@\r\nmkdir ~/custom-nginx\r\n@@\r\n\r\nОткроем его:\r\n\r\n@@\r\ncd ~/custom-nginx\r\n@@\r\n\r\nДалее проверим версию Nginx\r\n\r\n@@\r\nroot@kvmde68-19464# nginx -v\r\nnginx version: nginx/1.18.0\r\n@@\r\n\r\nИ загрузим исходный пакет Nginx с [официального сайта](http://nginx.org/en/download.html).\r\n\r\n@@\r\nsudo wget http://nginx.org/download/nginx-1.18.0.tar.gz \r\n@@\r\n\r\n@@\r\nroot@kvmde68-19464:~/custom-nginx# sudo wget http://nginx.org/download/nginx-1.18.0.tar.gz \r\n--2020-07-02 17:22:41-- http://nginx.org/download/nginx-1.18.0.tar.gz\r\nResolving nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227, 2001:1af8:4060:a004:21::e3\r\nConnecting to nginx.org (nginx.org)|62.210.92.35|:80... connected.\r\nHTTP request sent, awaiting response... 200 OK\r\nLength: 1039530 (1015K) [application/octet-stream]\r\nSaving to: 'nginx-1.18.0.tar.gz'\r\n\r\nnginx-1.18.0.tar.gz 100%[======================================>] 1015K 3.76MB/s in 0.3s \r\n\r\n2020-07-02 17:22:41 (3.76 MB/s) - 'nginx-1.18.0.tar.gz' saved [1039530/1039530]\r\n@@\r\n\r\nРаспакуйте полученный архив:\r\n@@\r\nsudo tar zxvf nginx-1.18.0.tar.gz \r\n@@\r\n\r\nЗапросите контент папки **~/custom-nginx**:\r\n@@\r\nls ~/custom-nginx \r\n@@\r\n\r\nКоманда покажет вывод:\r\n@@\r\nroot@kvmde68-19464:~/custom-nginx# ls ~/custom-nginx \r\nnginx-1.18.0 nginx-1.18.0.tar.gz\r\n@@\r\n\r\nЧтобы добавить модуль ngx_pagespeed, нужно сначала открыть папку modules в каталоге nginx-1.18.0:\r\n@@\r\ncd nginx-1.18.0/src/http/modules/\r\n@@\r\n\r\nВ этот каталог нужно загрузить архив ngx_pagespeed из [репозитория Github](https://github.com/apache/incubator-pagespeed-ngx).\r\n@@\r\nsudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip\r\n@@\r\n\r\n@@\r\nroot@kvmde68-19464:~/custom-nginx/nginx-1.18.0/src/http/modules# sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip\r\n--2020-07-02 17:26:03-- https://github.com/pagespeed/ngx_pagespeed/archive/master.zip\r\nResolving github.com (github.com)... 140.82.113.3\r\nConnecting to github.com (github.com)|140.82.113.3|:443... connected.\r\nHTTP request sent, awaiting response... 301 Moved Permanently\r\nLocation: https://github.com/apache/incubator-pagespeed-ngx/archive/master.zip [following]\r\n--2020-07-02 17:26:04-- https://github.com/apache/incubator-pagespeed-ngx/archive/master.zip\r\nReusing existing connection to github.com:443.\r\nHTTP request sent, awaiting response... 302 Found\r\nLocation: https://codeload.github.com/apache/incubator-pagespeed-ngx/zip/master [following]\r\n--2020-07-02 17:26:04-- https://codeload.github.com/apache/incubator-pagespeed-ngx/zip/master\r\nResolving codeload.github.com (codeload.github.com)... 140.82.114.10\r\nConnecting to codeload.github.com (codeload.github.com)|140.82.114.10|:443... connected.\r\nHTTP request sent, awaiting response... 200 OK\r\nLength: unspecified [application/zip]\r\nSaving to: 'master.zip'\r\n\r\nmaster.zip [ <=> ] 244.77K 664KB/s in 0.4s \r\n\r\n2020-07-02 17:26:05 (664 KB/s) - 'master.zip' saved [250646]\r\n@@\r\n\r\nПосле завершения загрузки разархивируйте архив:\r\n\r\n@@\r\nsudo unzip master.zip\r\n@@\r\n\r\nДля удобства переименуйте его в ngx_pagespeed:\r\n@@\r\nsudo mv incubator-pagespeed-ngx-master ngx_pagespeed\r\n@@\r\n\r\nОткройте каталог:\r\n@@\r\ncd ngx_pagespeed\r\n@@\r\n\r\nЗагрузите в него пакет **PageSpeed Optimization Libraries (psol)**, необходимый для компиляции:\r\n\r\n@@\r\nsudo wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz\r\n@@\r\n@@\r\nroot@kvmde68-19464:~/custom-nginx/nginx-1.18.0/src/http/modules/ngx_pagespeed# sudo wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz\r\n--2020-07-02 17:27:30-- https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz\r\nResolving dl.google.com (dl.google.com)... 172.217.22.78, 2a00:1450:4001:81c::200e\r\nConnecting to dl.google.com (dl.google.com)|172.217.22.78|:443... connected.\r\nHTTP request sent, awaiting response... 200 OK\r\nLength: 18740791 (18M) [application/x-tar]\r\nSaving to: '1.13.35.2-x64.tar.gz'\r\n\r\n1.13.35.2-x64.tar.gz 100%[======================================>] 17.87M 12.7MB/s in 1.4s \r\n\r\n2020-07-02 17:27:32 (12.7 MB/s) - '1.13.35.2-x64.tar.gz' saved [18740791/18740791]\r\n@@\r\n\r\nВ завершение извлеките архив psol в каталог ngx_pagespeed:\r\n\r\n@@\r\nsudo tar -xzvf 1.13.35.2-x64.tar.gz\r\n@@\r\n\r\n\r\n**Настройка и компиляция исходного кода**\r\n\r\nТеперь нужно отредактировать код Nginx и добавить в него модуль pagespeed. Откройте родительский каталог кода Nginx:\r\n\r\n@@\r\ncd ~/custom-nginx/nginx-1.18.0/\r\n@@\r\n\r\n\r\nСмотрим конфигурацию уже установленного nginx в системе:\r\n@@\r\n# nginx -V\r\n@@\r\n@@\r\nroot@kvmde68-19464:~/custom-nginx/nginx-1.18.0# nginx -V\r\nnginx version: nginx/1.18.0\r\nbuilt by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) \r\nbuilt with OpenSSL 1.1.0l 10 Sep 2019\r\nTLS SNI support enabled\r\nconfigure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.18.0/debian/debuild-base/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'\r\n\r\n@@\r\n\r\nСоберем nginx из исходников:\r\n@@\r\n# sudo ./configure __параметры_у_старого_nginx_ --add-module=:\r\n@@\r\n@@\r\nsudo ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.18.0/debian/debuild-base/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' --add-module=./src/http/modules/ngx_pagespeed/\r\n@@\r\n@@\r\nroot@kvmde68-19464:~/custom-nginx/nginx-1.18.0# sudo ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.18.0/debian/debuild-base/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' --add-module=./src/http/modules/ngx_pagespeed/\r\nchecking for OS\r\n + Linux 4.9.0-12-amd64 x86_64\r\nchecking for C compiler ... found\r\n + using GNU C compiler\r\n + gcc version: 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) \r\nchecking for gcc -pipe switch ... found\r\nchecking for --with-ld-opt=\"-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie\" ... found\r\nchecking for -Wl,-E switch ... found\r\nchecking for gcc builtin atomic operations ... found\r\nchecking for C99 variadic macros ... found\r\nchecking for gcc variadic macros ... found\r\nchecking for gcc builtin 64 bit byteswap ... found\r\nchecking for unistd.h ... found\r\nchecking for inttypes.h ... found\r\nchecking for limits.h ... found\r\nchecking for sys/filio.h ... not found\r\nchecking for sys/param.h ... found\r\nchecking for sys/mount.h ... found\r\nchecking for sys/statvfs.h ... found\r\nchecking for crypt.h ... found\r\nchecking for Linux specific features\r\nchecking for epoll ... found\r\nchecking for EPOLLRDHUP ... found\r\nchecking for EPOLLEXCLUSIVE ... found\r\nchecking for O_PATH ... found\r\nchecking for sendfile() ... found\r\nchecking for sendfile64() ... found\r\nchecking for sys/prctl.h ... found\r\nchecking for prctl(PR_SET_DUMPABLE) ... found\r\nchecking for prctl(PR_SET_KEEPCAPS) ... found\r\nchecking for capabilities ... found\r\nchecking for crypt_r() ... found\r\nchecking for sys/vfs.h ... found\r\nchecking for poll() ... found\r\nchecking for /dev/poll ... not found\r\nchecking for kqueue ... not found\r\nchecking for crypt() ... not found\r\nchecking for crypt() in libcrypt ... found\r\nchecking for F_READAHEAD ... not found\r\nchecking for posix_fadvise() ... found\r\nchecking for O_DIRECT ... found\r\nchecking for F_NOCACHE ... not found\r\nchecking for directio() ... not found\r\nchecking for statfs() ... found\r\nchecking for statvfs() ... found\r\nchecking for dlopen() ... not found\r\nchecking for dlopen() in libdl ... found\r\nchecking for sched_yield() ... found\r\nchecking for sched_setaffinity() ... found\r\nchecking for SO_SETFIB ... not found\r\nchecking for SO_REUSEPORT ... found\r\nchecking for SO_ACCEPTFILTER ... not found\r\nchecking for SO_BINDANY ... not found\r\nchecking for IP_TRANSPARENT ... found\r\nchecking for IP_BINDANY ... not found\r\nchecking for IP_BIND_ADDRESS_NO_PORT ... found\r\nchecking for IP_RECVDSTADDR ... not found\r\nchecking for IP_SENDSRCADDR ... not found\r\nchecking for IP_PKTINFO ... found\r\nchecking for IPV6_RECVPKTINFO ... found\r\nchecking for TCP_DEFER_ACCEPT ... found\r\nchecking for TCP_KEEPIDLE ... found\r\nchecking for TCP_FASTOPEN ... found\r\nchecking for TCP_INFO ... found\r\nchecking for accept4() ... found\r\nchecking for kqueue AIO support ... not found\r\nchecking for Linux AIO support ... found\r\nchecking for int size ... 4 bytes\r\nchecking for long size ... 8 bytes\r\nchecking for long long size ... 8 bytes\r\nchecking for void * size ... 8 bytes\r\nchecking for uint32_t ... found\r\nchecking for uint64_t ... found\r\nchecking for sig_atomic_t ... found\r\nchecking for sig_atomic_t size ... 4 bytes\r\nchecking for socklen_t ... found\r\nchecking for in_addr_t ... found\r\nchecking for in_port_t ... found\r\nchecking for rlim_t ... found\r\nchecking for uintptr_t ... uintptr_t found\r\nchecking for system byte ordering ... little endian\r\nchecking for size_t size ... 8 bytes\r\nchecking for off_t size ... 8 bytes\r\nchecking for time_t size ... 8 bytes\r\nchecking for AF_INET6 ... found\r\nchecking for setproctitle() ... not found\r\nchecking for pread() ... found\r\nchecking for pwrite() ... found\r\nchecking for pwritev() ... found\r\nchecking for sys_nerr ... found\r\nchecking for localtime_r() ... found\r\nchecking for clock_gettime(CLOCK_MONOTONIC) ... found\r\nchecking for posix_memalign() ... found\r\nchecking for memalign() ... found\r\nchecking for mmap(MAP_ANON|MAP_SHARED) ... found\r\nchecking for mmap(\"/dev/zero\", MAP_SHARED) ... found\r\nchecking for System V shared memory ... found\r\nchecking for POSIX semaphores ... not found\r\nchecking for POSIX semaphores in libpthread ... found\r\nchecking for struct msghdr.msg_control ... found\r\nchecking for ioctl(FIONBIO) ... found\r\nchecking for ioctl(FIONREAD) ... found\r\nchecking for struct tm.tm_gmtoff ... found\r\nchecking for struct dirent.d_namlen ... not found\r\nchecking for struct dirent.d_type ... found\r\nchecking for sysconf(_SC_NPROCESSORS_ONLN) ... found\r\nchecking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found\r\nchecking for openat(), fstatat() ... found\r\nchecking for getaddrinfo() ... found\r\nconfiguring additional modules\r\nadding module in ./src/http/modules/ngx_pagespeed/\r\nmod_pagespeed_dir=./src/http/modules/ngx_pagespeed//psol/include\r\nbuild_from_source=false\r\nchecking for psol ... found\r\nList of modules (in reverse order of applicability): ngx_http_write_filter_module ngx_http_header_filter_module ngx_http_chunked_filter_module ngx_http_v2_filter_module ngx_http_range_header_filter_module ngx_pagespeed_etag_filter ngx_http_gzip_filter_module ngx_pagespeed ngx_http_postpone_filter_module ngx_http_ssi_filter_module ngx_http_charset_filter_module ngx_http_sub_filter_module ngx_http_addition_filter_module ngx_http_gunzip_filter_module ngx_http_userid_filter_module ngx_http_headers_filter_module\r\nchecking for psol-compiler-compat ... found\r\n + ngx_pagespeed was configured\r\nchecking for PCRE library ... found\r\nchecking for PCRE JIT support ... found\r\nchecking for OpenSSL library ... found\r\nchecking for zlib library ... found\r\ncreating objs/Makefile\r\n\r\nConfiguration summary\r\n + using threads\r\n + using system PCRE library\r\n + using system OpenSSL library\r\n + using system zlib library\r\n\r\n nginx path prefix: \"/etc/nginx\"\r\n nginx binary file: \"/usr/sbin/nginx\"\r\n nginx modules path: \"/usr/lib/nginx/modules\"\r\n nginx configuration prefix: \"/etc/nginx\"\r\n nginx configuration file: \"/etc/nginx/nginx.conf\"\r\n nginx pid file: \"/var/run/nginx.pid\"\r\n nginx error log file: \"/var/log/nginx/error.log\"\r\n nginx http access log file: \"/var/log/nginx/access.log\"\r\n nginx http client request body temporary files: \"/var/cache/nginx/client_temp\"\r\n nginx http proxy temporary files: \"/var/cache/nginx/proxy_temp\"\r\n nginx http fastcgi temporary files: \"/var/cache/nginx/fastcgi_temp\"\r\n nginx http uwsgi temporary files: \"/var/cache/nginx/uwsgi_temp\"\r\n nginx http scgi temporary files: \"/var/cache/nginx/scgi_temp\"\r\n\r\n\r\n@@\r\n\r\n\r\nЗавершив настройку, запустите компиляцию:\r\n@@\r\nsudo make\r\n@@\r\n\r\n![file](/media/article/img/Снимок_экрана_2020-07-02_в_17.56.28.png)\r\n\r\nПосле этого можно установить программу:\r\n@@\r\nsudo make install\r\n@@\r\n\r\nПосле этого мы увидим что модуль добавлен:\r\n@@\r\nroot@kvmde68-19464:~/custom-nginx/nginx-1.18.0# nginx -V\r\nnginx version: nginx/1.18.0\r\nbuilt by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) \r\nbuilt with OpenSSL 1.1.0l 10 Sep 2019\r\nTLS SNI support enabled\r\nconfigure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.18.0/debian/debuild-base/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' --add-module=./src/http/modules/ngx_pagespeed/\r\n\r\n@@\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n**Включение ngx_pagespeed**\r\n\r\n\r\nПосле установки сервера Nginx нужно включить модуль **ngx_pagespeed**.\r\n\r\nСначала нужно создать папку, в которой модуль будет хранить кэш файлов сайта:\r\n\r\n@@\r\nsudo mkdir -p /var/ngx_pagespeed_cache\r\n@@\r\n\r\n\r\nПередайте права на эту папку пользователю Nginx, чтобы веб-сервер имел необходимый уровень доступа.\r\n\r\n@@\r\nsudo chown -R www-data:www-data /var/ngx_pagespeed_cache\r\n@@\r\n\r\nОткройте главный конфигурационный файл Nginx, nginx.conf, для редактирования:\r\n\r\n@@\r\nsudo nano /etc/nginx/nginx.conf\r\n@@\r\n\r\nДобавьте в блок **http** строки и сохраните изменения:\r\n\r\n@@\r\n##\r\n# Pagespeed Settings\r\n##\r\npagespeed on;\r\npagespeed FileCachePath /var/ngx_pagespeed_cache;\r\n@@\r\n\r\n\r\nТеперь файл **/etc/nginx/nginx.conf** выглядит так:\r\n\r\n![file](/media/article/img/Снимок_экрана_2020-07-03_в_17.08.29.png)\r\n\r\n\r\n\r\nДобавьте в **server-блок** следующее:\r\n@@\r\n# Ensure requests for pagespeed optimized resources go to the pagespeed\r\n# handler and no extraneous headers get set.\r\nlocation ~ \"\\.pagespeed\\.([a-z]\\.)?[a-z]{2}\\.[^.]{10}\\.[^.]+\" { add_header \"\" \"\"; } \r\nlocation ~ \"^/ngx_pagespeed_static/\" { } \r\nlocation ~ \"^/ngx_pagespeed_beacon\" { } \r\n@@\r\nЭти параметры настраивают pagespeed для оптимизации сайтов.\r\n\r\n\r\nПерезапустите Nginx, чтобы обновить настройки:\r\n\r\n@@\r\nsudo service nginx restart\r\n@@\r\n\r\nЧтобы убедиться, что модуль ngx_pagespeed работает, запустите бинарный файл Nginx.\r\n@@\r\nsudo /usr/sbin/nginx -V\r\n@@\r\nЕсли установка прошла успешно, модуль ngx_pagespeed появится в списке среди других пользовательских аргументов:\r\n@@\r\nroot@kvmde68-19464:~# sudo /usr/sbin/nginx -V\r\nnginx version: nginx/1.18.0\r\nbuilt by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) \r\nbuilt with OpenSSL 1.1.0l 10 Sep 2019\r\n--add-module=./src/http/modules/ngx_pagespeed/\r\n@@\r\n\r\nТеперь проверим, является ли модуль работающим или нет. Вы можете проверить его, выполнив следующую команду:\r\n@@\r\ncurl -I -p IP_вашего_сервера\r\n@@\r\n\r\nВы должны увидеть следующий вывод:\r\n@@\r\nroot@kvmde68-19464:~# curl -I -p 5.187.7.109\r\nHTTP/1.1 200 OK\r\nServer: nginx\r\nContent-Type: text/html\r\nConnection: keep-alive\r\nKeep-Alive: timeout=60\r\nETag: \"29cd-5665e85740a22\"\r\nDate: Fri, 03 Jul 2020 14:12:14 GMT\r\nX-Page-Speed: 1.13.35.2-0\r\nCache-Control: max-age=0, no-cache\r\n@@\r\n\r\nВы должны увидеть **X-Page-Speed** ​​и номер версии в выводе выше. \r\nЭто означает, что вы успешно установили **Ngx_pagespeed** на сервере.\r\n\r\n------------------\r\nЕсли у Вас возникли трудности в настройке или появились дополнительные вопросы, вы всегда можете обращаться в нашу службу поддержки через [систему тикетов](https://fornex.com/my/tickets/).","images":[{"id":3276,"file":"https://fornex.com/media/article/img/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_2020-07-02_%D0%B2_17.56.28.png","created":"2020-07-03T17:13:13+03:00"},{"id":3277,"file":"https://fornex.com/media/article/img/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_2020-07-03_%D0%B2_17.08.29.png","created":"2020-07-03T17:13:24+03:00"}],"updated_at":"2025-10-21T16:47:34+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/301/change/","children":[]},{"id":324,"title":"Фильтрация трафика в Nginx с помощью GeoIP","slug":"settings-nginx-geoip","priority":0,"summary":"Пошаговое руководство по ограничению доступа к сайту по странам с использованием модуля GeoIP в Nginx.","tags":[{"id":24,"name":"Безопасность","slug":"security","icon":null},{"id":49,"name":"Ubuntu","slug":"ubuntu","icon":null},{"id":50,"name":"Debian","slug":"debian","icon":null},{"id":51,"name":"CentOS","slug":"centos","icon":null},{"id":55,"name":"VPS","slug":"vps","icon":null},{"id":77,"name":"Виртуальный сервер","slug":"virtual-server","icon":"https://fornex.com/media/dream_tag_icon/server.svg"},{"id":100,"name":"Nginx","slug":"nginx","icon":null}],"body":"При работе с Nginx на [VPS](https://fornex.com/ru/virtual-private-servers/) или [выделенном сервере](https://fornex.com/ru/dedicated-servers/) может возникнуть необходимость ограничить доступ к сайту по странам. Это возможно сделать с помощью подуля Nginx **GeoIP**.\r\n\r\n## Установка необходимых пакетов\r\nДля установки модуля **GeoIP** на сервере выполните соответствующие команды в зависимости от операционной системы.\r\n\r\n**Debian/Ubuntu**\r\n``` bash\r\nsudo apt-get install nginx-module-geoip\r\n```\r\n\r\n**CentOS**\r\n``` bash\r\nyum install nginx-module-geoip\r\n```\r\n\r\n### Обновление базы данных GeoIP\r\nДля обновления базы данных **GeoIP** выполните команды:\r\n``` bash\r\nmv /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.dat_bak\r\ncd /usr/share/GeoIP/\r\nwget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz\r\ngunzip GeoIP.dat.gz\r\n```\r\n\r\n### Проверка сборки Nginx с поддержкой модуля GeoIP\r\n\r\nПосле обновления базы GeoIP убедитесь, что Nginx был собран с параметром `--with-http_geoip_module`. Для этого используйте команду:\r\n``` bash\r\nnginx -V\r\n```\r\n\r\nЕсли Nginx не был собран с нужным параметром, вам нужно будет выполнить [сборку модулей Nginx](https://fornex.com/ru/help/module-nginx-linux/).\r\n\r\n## Настройка Nginx для ограничения доступа по странам\r\n\r\nВ каталоге с конфигурационными файлами Nginx создайте файл `block.map.include` с содержанием:\r\n``` bash\r\ngeoip_country /usr/share/GeoIP/GeoIP.dat;\r\nmap $geoip_country_code $allowed_country {\r\n default yes;\r\n CN no;\r\n VN no;\r\n TW no;\r\n}\r\n```\r\n\r\nВ этом примере доступ к сайту ограничен для пользователей из Китая, Вьетнама и Тайваня.\r\n\r\nДля того чтобы разрешить доступ только пользователям из определённых стран, отредактируйте конфигурацию следующим образом:\r\n\r\n``` bash\r\ngeoip_country /usr/share/GeoIP/GeoIP.dat;\r\nmap $geoip_country_code $allowed_country {\r\n default no;\r\n RU yes;\r\n UA yes;\r\n}\r\n```\r\n\r\nВ этом примере сайт будет доступен только пользователям из России и Украины.\r\n\r\n### Внесение изменений в конфигурацию Nginx\r\n\r\nВ конфигурационном файле `/etc/nginx/nginx.conf` в секции http добавьте строку:\r\n\r\n``` bash\r\ninclude include/block.map.include;\r\n```\r\n\r\nЗатем в секции server вашего хоста добавьте следующий блок:\r\n``` bash\r\nif ($allowed_country = no) {\r\n return 404;\r\n}\r\n```\r\n\r\nПримените изменения, перезапустив Nginx:\r\n``` bash\r\nnginx -s reload\r\n```\r\n\r\n!!! warning Внимание\r\n MaxMind больше не поддерживает старый формат баз данных **.dat** и закрыла возможность их свободного скачивания. Сейчас доступ к файлам предоставляется только после авторизации и приобретения лицензии. В настоящее время используется новый формат баз данных **.mmdb**.\r\n\r\n::: front-promo-main-services\r\n:::\r\n\r\n!!! info Помощь \r\n Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через [систему тикетов](/my/tickets/) — мы обязательно вам поможем!","images":[],"updated_at":"2026-01-30T16:19:00+03:00","status":"published","type":"article","get_edit_url":"/admin/dream/article/324/change/","children":[]}]}}},"payment":{"options":{},"checkoutStatus":"idle"}}}