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

HTTP-редиректы в Nginx
Полное руководство по настройке переадресаций в Nginx
Добавление модулей nginx в Linux
Описание инструкции по добавлению модулей Nginx в Linux (Debian/Ubuntu/CentOS)
Как узнать версию PHP и другого ПО по SSH
Как узнать версию PHP и другого ПО из консоли на вашем VPS/выделенном сервере
Кэширование в Nginx
Как настроить кэширование страниц для ускорения сайта и снижения нагрузки.
Мониторинг Nginx
Описание работы утилиты Ngxtop которая мониторит access-логи веб-сервера Nginx
Настройка кэширования статических файлов в Nginx
Как ускорить загрузку страниц, оптимизировать трафик и управлять временем хранения кэша
Настройка параметров-кэширование и сжатие в VestaCP
Как включить кэширование статических файлов для ускорения загрузки сайта и снижения нагрузки на сервер
Ограничение доступа к сайту через Nginx
Ограничение доступа к сайту через Nginx
Ограничение нагрузки на сайт через 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":"Правильная настройка кэширования и сжатия статических ресурсов на веб-сервере значительно ускоряет загрузку сайта и снижает нагрузку на сервер. В этой статье мы рассмотрим, как настроить срок действия кэша с помощью директивы **Expires** и включить GZIP-сжатие для статических файлов в Nginx.\r\n\r\n---\r\n\r\n**Настройка директивы Expires для статических файлов**\r\n\r\nДиректива **Expires** задаёт период, в течение которого кэшированные ресурсы считаются актуальными. Это позволяет браузеру использовать локальные копии файлов, не отправляя повторные запросы на сервер.\r\n\r\nОткройте конфигурационный файл Nginx для вашего виртуального хоста, обычно это `/etc/nginx/nginx.conf` в Linux. Найдите блок **server {}**, содержащий секцию **location** для обработки статических файлов.\r\n\r\nПример конфигурации секции **location**:\r\n\r\n```\r\nlocation ~* \\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf)$ {\r\n root /var/www/username/data/www/usernamesite.ru;\r\n access_log /var/www/nginx-logs/usernamesite isp;\r\n access_log /var/www/httpd-logs/usernamesite.ru.access.log;\r\n error_page 404 = @fallback;\r\n expires 7d;\r\n}\r\n```\r\n\r\n- **expires 7d** — указывает, что браузер будет хранить кэш 7 дней.\r\n- Для редко обновляемых файлов, таких как CSS, JS или изображения, можно увеличить срок кэширования до нескольких месяцев или года.\r\n\r\n**Применение шаблона для всех виртуальных хостов**\r\n\r\nЧтобы автоматически применять директиву **Expires** для статических файлов на всех виртуальных хостах через панель управления, создайте файл `/usr/local/ispmgr/etc/server.templ` со следующим содержимым:\r\n\r\n```\r\nlocation ~* \\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf)$ {\r\n expires 7d;\r\n}\r\n```\r\n\r\n**Включение GZIP-сжатия для статических файлов**\r\n\r\nGZIP-сжатие уменьшает размер текстовых файлов, что снижает объём передаваемых данных и ускоряет загрузку страниц.\r\n\r\nДобавьте следующие директивы в блок **server {}** вашего виртуального хоста:\r\n\r\n```\r\nserver {\r\n ...\r\n gzip on;\r\n gzip_disable \"msie6\";\r\n gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\r\n}\r\n```\r\n\r\n- **gzip on;** — активирует сжатие.\r\n- **gzip_disable \"msie6\";** — отключает сжатие для устаревших браузеров, таких как Internet Explorer 6.\r\n- **gzip_types** — определяет MIME-типы файлов, которые будут сжиматься.\r\n\r\n!!! note Примечание\r\n На [VPS](https://fornex.com/ru/virtual-private-servers/) и [выделенных серверах](https://fornex.com/ru/dedicated-servers/) вы можете гибко настраивать конфигурацию Nginx, включая кэширование и сжатие. Это помогает оптимизировать производительность сайта и снизить нагрузку на сервер.","images":[],"updated_at":"2025-09-22T14:04:31+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":"Ограничение доступа к сайту через Nginx","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**Ограничение доступа к файлам**\r\n\r\nЧтобы закрыть доступ к файлам, которые могут вызывать повышенный интерес:\r\n\r\n```\r\n location ~ /.svn/ {\r\n deny all;\r\n }\r\n```\r\n\r\n**Разграничение доступа по IP**\r\n\r\nВы можете разрешать или запрещать доступ к файлам с определённых IP-адресов, используя директивы **allow** и **deny**:\r\n\r\n```\r\n location /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**Защита с логином и паролем**\r\n\r\nДля более гибкой защиты можно использовать директивы **auth\\basic** и **auth\\basic\\user\\file**. Пользователю будет необходимо ввести логин и пароль:\r\n\r\n```\r\n location /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**Комбинированная защита**\r\n\r\nВы можете сочетать IP-фильтр и базовую аутентификацию:\r\n\r\n```\r\n location /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**Защита от запросов к несуществующим файлам**\r\n\r\n```\r\n location ~ \\.(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**Перезапуск Nginx**\r\n\r\nПосле внесения изменений необходимо перезапустить Nginx одной из команд:\r\n\r\n```\r\nsystemctl reload nginx\r\nservice nginx reload\r\n```\r\n\r\n**Перенаправление по IP**\r\n\r\nВ зависимости от IP-адреса Nginx может выполнять перенаправление:\r\n\r\n```\r\nlocation / {\r\n \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\r\n!!! note Примечание\r\n В этом примере все посетители будут перенаправлены на `https://$host$request_uri`, кроме запроса с IP-адреса 111.111.111.111.\r\n\r\n\r\n**Защита от перебора паролей с помощью iptables**\r\n\r\nВы можете блокировать IP на время, если количество запросов превышает установленный порог:\r\n\r\n```\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!!! note Примечание\r\n На [VPS](https://fornex.com/ru/virtual-private-servers/) и [выделенных серверах](https://fornex.com/ru/dedicated-servers/) вы можете полностью управлять конфигурацией NGINX. Это позволяет гибко настраивать доступ к файлам, реализовывать IP-фильтры, защиту паролем и блокировку перебора паролей с помощью iptables.","images":[],"updated_at":"2025-10-23T16:53:42+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":"#### Ограничение количества соединений.\r\n\r\nПрежде всего, с помощью директивы **limit_conn_zone** в секции **http** следует определить ключ, имя и набор параметров зоны разделяемой памяти для хранения состояний значений ключа:\r\n\r\n```\r\n limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;\r\n```\r\n\r\nДалее, с помощью директивы **limit_conn** в контексте **location** следует указать имя зоны разделяемой памяти и максимально допустимое количество соединений для одного значения ключа:\r\n\r\n```\r\n location /download/ {\r\n limit_conn conn_limit_per_ip 5;\r\n }\r\n```\r\n\r\n#### Ограничение количества запросов за единицу времени.\r\n\r\nС помощью директивы **limit_req_zone** в секции **http** следует определить ключ, имя и набор параметров зоны разделяемой памяти для хранения состояний значений ключа:\r\n\r\n```\r\n limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;\r\n```\r\nПосле этого, используя директиву limit_req в контексте location следует указать имя зоны разделяемой памяти и максимальный размер всплеска запросов:\r\n\r\n```\r\n location /download/ {\r\n limit_req zone=req_limit_per_ip burst=10;\r\n }\r\n```\r\n\r\n#### Ограничение скорости передачи ответа клиенту.\r\n\r\nВ директиве **limit_rate** в секции **location** можно задать скорость передачи ответа клиенту (в байтах за секунду) на один запрос (это значит, что при использовании клиентом двух соединений скорость будет вдвое больше ограничения):\r\n\r\n```\r\n location /download/ {\r\n limit_rate 50k;\r\n }\r\n```\r\n\r\n\r\nТакже возможно использование директивы **limit_rate_after**, которая задает объем данных, после которого вступит в силу ограничение скорости передачи ответа клиенту:\r\n\r\n```\r\n location /download/ {\r\n limit_rate_after 1m;\r\n limit_rate 50k;\r\n }\r\n```","images":[],"updated_at":"2018-09-11T17:15:40+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"}}}