Ошибка 404 not found ubuntu
Я установил 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. Для этого переходим на страничку данного сервиса, выбираем свой сайт, а дальше жмем: Состояние -> Ошибки сканирования и выбираем "Не найдено".
Также хорошо с этой задачей справляется бесплатная программа XenuLinks, скачать которую можно здесь, а посмотреть мануал - здесь.
Совет
Когда пользователь заходит на сайт и видит данную ошибку через выдачу сервера, то он не видит ваш сайт (меню, навигацию, дизайн и т.д.). Соответственно со 100% вероятностью закроет страницу. Такая схема работает на всех хостингах по умолчанию. Но вы можете запрограммировать данную страницу и показать вместе с ней свой сайт. А это значит, что пользователь видя в меню основные ссылки вашего сайта может нажать на них, и остаться на сайте. Вот примеры неправильной и правильной выдачи соответственно:
Есть много разных способов реализовать подобную схему, но самый универсальный из них - это добавить в файл .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, если нет особых требований у разработчиков сайта.
Читайте также: