NGINX Пользовательская ошибка 500 страница не отображается - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь поймать ошибку 500, которую NGINX показывает, когда местоположение / не существует или пусто.

server {
    listen       80;
    server_name  localhost;
    root   /usr/share/nginx/html/dist/app;
    index  index.html index.htm;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
      ssi on;
      root /usr/share/nginx/html/;
      internal;
    }

    location / {
      try_files $uri $uri/ /index.html;
    }
}

Когда я сохраняю и проверяю это, NGINX говорит мне, что конфигурация действительна. Но затем, когда я очищаю свою папку dist, я получаю ошибку по умолчанию NGINX 500.

ls -l из /usr/share/nginx/html/

-rwxrwxrwx   1 root root     43 Feb 17 15:26 50x.html
drwxrwxrwx   2 root root   4096 Feb 17 15:32 dist

Почему я все еще получаю ошибку 500 от NGINX вместо 50х. html до c?

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

измените ваши nginx конфиги на

server {
    listen       80 default_server;
    server_name  localhost;
    root   /usr/share/nginx/html/dist/app;
    index  index.html index.htm;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
      ssi on;
      root /usr/share/nginx/html/;
      index 50x.html
      internal;
    }

    location / {
      try_files $uri $uri/ /index.html =500;
    }
}

, и вы сможете увидеть пользовательскую ошибку

➜  ~   curl http://127.0.0.1:32769/
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>This is My custome error.</h1>
</body>
</html>

, в основном вам нужно добавить индекс к месту ошибки

 index 50x.html

и выдает ошибку, если ни один из файлов не существует

try_files $uri $uri/ /index.html =500;
0 голосов
/ 17 февраля 2020

Если предположить, что /index.html работает с интерпретацией (например, PHP -FPM), NGINX по умолчанию будет отображать ошибки с сервера FastCGI.

Чтобы доставить ошибки с помощью NGINX, вы бы хотите использовать fastcgi_intercept_errors:

fastcgi_intercept_errors off;

Аналогично, если вы перенаправляете запрос на /index.html в другом месте (кроме сервера FastCGI), вы должны использовать proxy_intercept_errors:

proxy_intercept_errors off;
...