@Tarakkolya

Как правильно прописать конфиги для 404 ошибки в nginx?

Здравствуйте, проблема такая: при вызове несуществующей страницы например mysite.ru/wrongpage
почемуто открывается главная страница.
конфиги такие:
server{
    listen 80;
    server_name www.mysite.ru;
    rewrite ^ http://mysite.ru$request_uri? permanent; #301 redirect
}
server {
    listen 80;
    server_name mysite.ru;
    root /home/user/mysite;

    location / {
        index index.htm index.html index.php;
        try_files $uri /index.html;
        error_page 404             /404.html;
        error_page 500 502 503 504 /50x.html;
    }

    location = /index.html {
       if ($request_uri = /index.html) {
           rewrite ^ http://mysite.ru? permanent;#301 redirect
       }
    }

    error_log /var/log/nginx/mysite.error.log;
    access_log /var/log/nginx/mysite.access.log;
}

Подскажите, пожалуйста, как исправить.
  • Вопрос задан
  • 9248 просмотров
Решения вопроса 2
Glueon
@Glueon
DevOps
С какой целью у вас в try_Files указан /index.html?
try_files $uri /index.html;
Пробует найти $uri и если не находит перебрасывает на /index.html.
Это синтаксис try_Files:
try_files file ... uri;

Последний аргумент - это URL или named location в случае, если ни один из предыдущих путей не был найден.
В вашем случае, должно быть тогда:
try_files $uri /404.html
Насколько я понимаю начиная с какой-то версии nginx поддерживает следующий синтаксис:
try_files $uri =404
Тогда в случае если ни один из аргументов не был найден генерируется HTTP код 404 и далее обработка идет по соотвествующей error_page.
Ответ написан
Комментировать
merryjane
@merryjane
Системный администратор
Читаем ман по try_files:
nginx.org/ru/docs/http/ngx_http_core_module.html#t...
В случае, если ни один файл не найден, то делается внутреннее перенаправление на uri, заданный последним параметром.

То-есть попробуйте дописать =404;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
error_page 400 404 /404.html;
location = /404.html {
root /home/address
}
ну у меня так.
вне этого:
location / {
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы