Ошибка 404 not found ubuntu

Обновлено: 07.07.2024

Я установил nginx на свой VPS, который работает под управлением Ubuntu 18.04. После настройки DNS-записей для домена, указывающих на мой VPS (просто запись A, указывающая на IP-адрес VPS), я все еще получаю ошибку «404 Not Found», хотя я считаю, что конфигурация блока моего сервера верна. Сам конфиг оставлю ниже, так как есть добрые люди, у которых намного больше опыта, чем у меня :)

1 ответ

Позвольте мне объяснить, что вы сделали с этой конфигурацией.

Вы определили два виртуальных сервера. Мы пока отбрасываем первую, давайте объясним вторую:

Первые три строки этого сервера следующие:

Затем мы определяем имя сервера, которое отличает этот сервер от других. Комбинация Port + Server_name позволяет nginx узнать, какая конфигурация сервера используется при обработке запроса.

Даже с этим именем сервера, присвоенным nginx, если у вас нет указания default_server в параметре директивы listen , nginx может использовать этот сервер для обработки запроса.

Затем мы возвращаем ошибку 404 Not Found. Наконец, для этого виртуального сервера мы получаем 404 только в том случае, если мы не используем хост huds0n.xyz. (Попробуйте, например, если у вас нет ничего другого, что мешает ему использовать IP-адрес сервера в вашем браузере, чтобы узнать, перенаправлены ли вы).

Теперь у нас есть первый блок сервера, который определяет часть сервера SSL / TLS.

Я вижу две проблемы с этой конфигурацией, но сначала я объясню, что на данный момент делает ваша конфигурация.

Вы определяете корневой каталог в папке / root / web / hudson / main . Это должна быть папка.

Следующая строка - это индексная директива. Представим, что в вашей основной папке у вас есть папка с именем strawberry и еще одна с именем raspberry . В strawberry у вас есть файл с именем index.html, содержащий красивое изображение клубники. В raspberry , к сожалению, веб-мастер забыл поместить такой файл.

С помощью директивы index вы указываете nginx искать файлы (в порядке слева направо), указанные в директиве. Когда вы написали URL-адрес папки, Nginx будет искать index.html, затем, если он не найден, index.htm и так далее.

Следующий блок - это блок местоположения в корне веб-сайта ( / ). Каждый запрос, сделанный на этом сервере, относится к этому блоку.

Директива try_files аналогична директиве index, но запускается каждым URL-адресом, а не только URL-адресом, связанным с папкой.

Он попробует URI (правая часть URL-адреса после хоста), затем URI в качестве папки или вернет ошибку 404 (не найдено).

Следующий блок местоположения касается каждого файла, который соответствует регулярному выражению (это значение тильды), и это значение регулярного выражения - это каждое имя файла, которое заканчивается на .php .

Для этих файлов мы включаем некоторую конфигурацию fastcgi php, которая предоставит PHP необходимые переменные для обработки запроса, и мы передаем запрос и переменные в сокет unix, расположенный в /run/php/php7.2-fpm.sock .

Я упомянул две проблемы:

Вы хотите использовать PHP, но ваша директива index указывает на файлы HTML. Если вы хотите, чтобы index.php использовался для вашей корневой веб-страницы, измените его на index index.php

В блоке местоположения / вы пробуете $ uri, $ uri плюс косую черту, а затем возвращаете 404. Многие CMS / Framework (например, я думаю о laravel) делают возможным своего рода переписывание URL-адрес. У вас есть один файл PHP (например, index.php), который обрабатывает каждый запрос. Как это работает ? Мы просто передаем PHP информацию о пути в виде filename + path в переменной FastCGI. Вы можете изменить свой блок, чтобы выполнить эту миссию, поместив это вместо своей директивы try_files : try_files $uri $uri/ /index.php?$query_string;

Основная причина этого 404 также может быть в том, что ваш сервер nginx не может получить доступ к папке или что ваша папка отсутствует / пуста.

Как было изначально задумано, ваш веб-контент ДОЛЖЕН находиться в папке /var/www/<subfolder> и принадлежать www-data .

Вы не должны помещать свои файлы в корневую папку.

Я надеюсь, что это ответит на ваш вопрос и поможет вам найти причину вашей проблемы.

В последнее время, а именно на свежих версиях дистрибутивов Linux частенько стала проявляться ошибка 404. По крайней мере, у мня именно так. Большинство пользователей интернета знают, что это за ошибка, которая сопровождается надписью "Not Found". Для интернета все понятно: запрашиваемый вами адрес отсутствует.

А что же делать, если вы подключили новый репозиторий и при попытке установки с него приложения вы получаете ошибку 404? Что это такое? Как нету? И еще масса других эмоций проявляется при виде данной ошибки. И что теперь? Я не смогу установить нужный мне пакет? Нет, установить вы его сможете, даже если не с репозитория, то с исходников :) .

А решение данной проблемы весьма простое, но прежде чем его рассказать, я хотел бы описать пример происхождения данной ошибки, что-бы в дальнейшем было все ясно и понятно.

Итак, у меня имеется на девайсе Linux Ubuntu 10.10 и что-то мне захотелось в "гоночки" какие-нибудь поиграть :) . Нашел себе Speed Dreams и решил "прикрутить" репозиторий где и находятся пакеты данной игры. Прикручиваю известный всем образом новый репозиторий данной игры:

sudo add-apt-repository ppa:speed-dreams/ppa

Естественно ввожу пароль. И получаю данную информацию:

Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 8A25D39F44452FC12F8B666850122C99B5EAAD39
gpg: запрашиваю ключ B5EAAD39 с hkp сервера keyserver.ubuntu.com
gpg: ключ B5EAAD39: "Launchpad PPA for Speed Dreams" не изменен
gpg: Всего обработано: 1
gpg: неизмененных: 1

Далее обновляю информацию о репозиториях:

sudo apt-get update

И любуюсь интересной ошибкой в конце списка:

E: Некоторые индексные файлы не скачались, они были проигнорированы или вместо них были использованы старые версии

И даже если я проигнорирую эту ошибку и попытаюсь установить игру:

sudo apt-get install speed-dreams-beta

То получу вразумительный ответ:

E: Не удалось найти пакет speed-dreams-beta

И в чем же причина данной ошибки? Вроде бы все делал как нужно. А причина данной ошибки в том, что для данного дистрибутива (напомню что в примере используется Linux Ubuntu 10.10) данной игры еще нет! И что же теперь? Я не погоняю на каком-нить низкополигональном болиде? Нет, я решу эту проблему (вот с таким энтузиазмом должны решать возникающие сложности в LInux новички :) )! - вот и подошло время рассказать вам, как решить эту проблему.

А решить ее очень просто: нужно всего-лишь в источниках приложений указать для данного репозитория дистрибутив более ранний (то есть 10.04). А как это делается объясняю по порядку:

Открываем приложение "Источники приложений", оно находиться в Система - Администрирование - Источники приложений. Находим репозиторий игры - имеет всего две строки:

Выделяем первую строку, нажимаем на кнопку "Изменить. " и в поле "Дистрибутив" вводим имя предыдущего дистрибутива: lucid (напомню, что имя предыдущего дистрибутива было Lucid Lynx), как это показано на скриншоте:


Нажимаем кнопочку "Ок" и проделываем тоже самое со второй строчкой. Теперь обновляем сведения о репозиториях и смело (если вам опять не выдало подобной ошибки) устанавливаем игру :) .

Вот и все: текста много, проблема могла показаться страшной и не решимой, а оказалось, что решить ее можно всего в пару кликов мышкой :) . Но есть одно маленькое НО: из-за особенностей разных версий дистрибутива приложение установленное подобным образом может отказаться работать, либо работать не совсем корректно.



Такие ошибки появляется как правило когда в Источники приложений (sources.list) подключены недоступные репозитории. Эти ошибки не причиняют никакого вреда системе, но если они вас раздражает и вы хотите избавиться от назойливых извещений, эти репозитории можно удалить.

Откройте Источники приложений в вкладке Другое ПО и удалите репозитории, которые определились в терминале, как Package 404 Not Found, а затем сделайте обновление:


sudo apt-get update

Вы также можете удалить недоступные репозитории, установив пакет под названием banish404 в Ubuntu 14.10/14.04/12.04, следующими командами в терминале:

sudo add-apt-repository ppa:fossfreedom/packagefixes
sudo apt-get update
sudo apt-get install banish404

По окончании установки выполните следующую команду в терминале:

sudo banish404


Теперь после выполнения команды sudo apt-get update в терминале ошибки не должны больше появляться:

Школа хостинга Редактор: Марина Долгова 68640 2 мин Аудио

Что такое ошибка 404 Not Found (nginx)

Почему это происходит?

Это происходит из-за того, что пользователь перешел на страницу сайта по неправильной ссылке. Например пользователь ввел в браузере (или перешел по ссылке) http://mysite.com/rbot.html, а нужно было - http://mysite.com/r o bot.html. Причем, эта ссылка могла находится как на вашем сайте, так и на сторонних сайтах. Обнаружить такие ссылки можно с помощью Google Webmaster Tools. Для этого переходим на страничку данного сервиса, выбираем свой сайт, а дальше жмем: Состояние -> Ошибки сканирования и выбираем "Не найдено".

Поиск ошибки 404 Not Found

Также хорошо с этой задачей справляется бесплатная программа XenuLinks, скачать которую можно здесь, а посмотреть мануал - здесь.

Совет

Когда пользователь заходит на сайт и видит данную ошибку через выдачу сервера, то он не видит ваш сайт (меню, навигацию, дизайн и т.д.). Соответственно со 100% вероятностью закроет страницу. Такая схема работает на всех хостингах по умолчанию. Но вы можете запрограммировать данную страницу и показать вместе с ней свой сайт. А это значит, что пользователь видя в меню основные ссылки вашего сайта может нажать на них, и остаться на сайте. Вот примеры неправильной и правильной выдачи соответственно:

Неправильная ошибка 404

Правильная ошибка 404

Есть много разных способов реализовать подобную схему, но самый универсальный из них - это добавить в файл .htaccess такую запись:

Соответственно саму страницу "/error404.html" вам нужно будет предварительно создать.

Марина Долгова

Провайдеры с виртуальным хостингом

Провайдеры с виртуальным выделенным сервером (VPS)

Провайдеры с выделенным сервером

Задайте его экспертам! Ответ приходит очень быстро и прямо на ваш email.







От панели управления зависит ваше удобство в настройке хостинге\сайта.

Большинство качественных хостингов из нашего ТОПа используют удобные панели управления, поэтому рекомендуем больше внимания уделить другим параметрам при выборе.

Облачный хостинг - распределение нагрузки на несколько серверов, если сервер с вашим сайтом перегружен или не работает. Это гарантия того что пользователи в любом случае смогут видеть ваш сайт. Но это дорогая, более сложная опция, которую предоставляют далеко не все провайдеры.

Виртуальный хостинг - подходит для большинства проектов начального уровня с посещаемостью до 1000 человек в сутки. В таком хостинге мощность сервера делится между несколькими хостинговыми аккаунтами. Услуга проста в настройке даже для новичков.

VPS - подходит для более сложных проектов с достаточно большой нагрузкой и посещаемостью до 10000 человек в сутки. Здесь мощность сервера фиксированная для каждого виртуального сервера, при этом сложность настройки увеличивается.

Выделенный сервер - нужен для очень сложных и ресурсоемких проектов. Для вас выделяют отдельный сервер,мощность которого будете использовать только вы. Дорого и сложно настраивать.

Размещение и обслуживание вашего собственного сервера в дата-центре хостинга - это не очень популярная услуга и требуется в исключительных случаях.

  • Облачный хостинг
  • Виртуальный хостинг
  • VPS/VDS
  • Выделенный сервер
  • Размещение сервера
  • CDN

CMS - это система управления контентом сайта. Хостеры стараются для каждой из них делать отдельный тариф или упрощать установку. Но в целом это больше маркетинговые ходы, т.к. у большинства популярных CMS нет специальных требований к хостингу, а те что есть - поддерживаются на большинстве серверов.

Виртуализация - это создание виртуальной среды на физическом сервере, позволяющая запускать требуемые ПО без затрагивания процессов, совершаемых другими пользователями сервера. С её помощью ресурсы физического сервера распределяются между виртуальными (VPS/VDS). Основные виды: аппаратная (KVM), паравиртуализация, виртулизация на уровне ОС (OpenVZ).

Абузоустойчивый хостинг - компании, которые разрешают размещать практически любой контент, даже запрещенный (спам, варез, дорвеи, порнографические материалы). Такие компании не удаляют контент вашего веб-сайта при первой же жалобе (“абузе”).

Безлимитный хостинг - хостинг у которого отсутствуют лимиты на количество сайтов, БД и почтовых ящиков, трафик, дисковое пространство и т.д. Обычно это больше маркетинговый трюк, но можно найти что-то интересное для себя.

Безопасный хостинг - тот, где администрация постоянно обновляет ПО установленное на серверах, устанавливает базовую защиту от DDoS-атак, антивирус и файерволлы, блокирует взломанные сайты и помогает их "лечить".

Защита от DDOS - компании, которые предоставляют хостинг с защитой от DDoS-атак. Такие пакеты ощутимо дороже обычных, но они стоят своих денег, так как ваш сайт будет защищен от всех видов сетевых атак.

  • Абузоустойчивый хостинг
  • Безлимитный хостинг
  • Безопасный хостинг
  • Черный список
  • Защита от DDOS
  • Конструктор сайтов
  • Партнерские программы
  • Реселлинг хостинга

Тестовый период - предоставляется хостером бесплатно на 7-30 дней, чтобы вы могли удостовериться в его качестве.

Moneyback - период на протяжении которого хостер обязуется вернуть деньги, если вам не понравится хостинг.

Настоятельно рекомендуем не покупать слишком дешевый хостинг! Как правило с ним очень много проблем: сервер иногда не работает, оборудование старое, поддержка долго отвечает или не может решить проблему, сайт хостера глючит, ошибки в регистрации, оплате и т.д.

Также мы собрали тарифы от тысяч хостеров, чтобы вы могли выбрать хостинг по конкретной цене.

  • Дешёвый хостинг
  • Дешевый VPS-хостинг
  • Цена-Качество
  • Дорогой хостинг
  • Бесплатный хостинг
  • VPS/VDS посуточно

На языке программирования PHP и базах данных MySQL сейчас работает большинство сайтов. Они же поддерживаются практически всеми современными хостингами.

ОС - операционная система, установленная на сервере хостинга. Мы рекомендуем размещать на серверах с Linux, если нет особых требований у разработчиков сайта.

Читайте также: