Назад | Перейти на главную страницу

Как настроить Nginx для устранения возможных ошибок веб-сайта для тестирования

Я разрабатываю веб-сайт с использованием фреймворка Django и Nginx. Хотел бы создать ложную системную ошибку и наблюдать, как моя система реагирует.

Это приятно статья однако это создает только ложную ошибку 502. Я хотел бы протестировать другие страницы ошибок (HTTP403, HTTP404, HTTP405 или страницу распространенных ошибок) перед запуском.

# Testing for Error 502 - Bad Gateway
location /testing {
            fastcgi_pass unix:/does/not/exist;
    }

401 Неавторизованный

Аналогично 403 Forbidden, но специально для использования, когда аутентификация требуется, но она не удалась или еще не была предоставлена. Ответ должен включать поле заголовка WWW-Authenticate, содержащее запрос, применимый к запрошенному ресурсу.

Для этого вы можете добавить новое местоположение и ограничить его с помощью htaccess. Создайте файл htaccess с htpasswd -c /etc/nginx/htpasswd/htpasswd.domain username. Затем добавьте новое местоположение в конфигурацию nginx и внутри этого местоположения поместите следующее:

auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd/htpasswd.domain;

Теперь, если вы перейдете в указанное вами место и был реализован auth_basic, тогда веб-сайт запросит имя пользователя и пароль. Если вы введете неверные данные, вам будет выдан код ошибки 401.

403 Запрещено

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

Просто добавьте новое местоположение, которое у вас есть, запретите доступ к нему и скажите NginX, чтобы он вернул определенный код ошибки.

location ~ /(dir1|dir2|dir3) {
   deny all;
   return 403;
}

404 Не Найдено

Запрошенный ресурс не может быть найден, но может быть доступен в будущем. Последующие запросы клиента допустимы.

Аналогично предыдущей версии:

location ~ /(dir1|dir2|dir3) {
   deny all;
   return 404;
}

Это должно лишить вас доступа к этому местоположению с ошибкой 404.


Очевидно, перезапустите NginX в качестве последнего шага. для каждой модификации.

Теоретически достаточно, если вы просто добавляете все локации и всегда возвращаете разные коды ошибок.

Разместите на сервере небольшой сценарий, который позволит вам указать код ошибки, которую вы хотите проверить.

Пример на PHP (это должно быть легко портировано на любой язык сценариев, который работает на вашем сервере):

<?php
$errorCode = ( isset( $_GET['code'] ) ) ? intval( $_GET['code'] ) : 200;
header( 'Test error', true, $errorCode );

Это позволяет вам проверить любую ошибку, которую вы хотите, без дополнительной настройки сервера:

$ wget -S --spider http://localhost/error.php?code=404
Spider mode enabled. Check if remote file exists.
--2017-11-24 10:23:44--  http://localhost/error.php?code=404
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 404 Not Found
  Date: Fri, 24 Nov 2017 09:23:44 GMT
  Server: Apache/2.4.7 (Ubuntu)
  X-Powered-By: PHP/5.5.9-1ubuntu4.22
  Keep-Alive: timeout=5, max=100
  Connection: Keep-Alive
  Content-Type: text/html
Remote file does not exist -- broken link!!!
$ wget -S --spider http://localhost/error.php?code=501
Spider mode enabled. Check if remote file exists.
--2017-11-24 10:23:47--  http://localhost/error.php?code=501
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 501 Not Implemented
  Date: Fri, 24 Nov 2017 09:23:47 GMT
  Server: Apache/2.4.7 (Ubuntu)
  X-Powered-By: PHP/5.5.9-1ubuntu4.22
  Connection: close
  Content-Type: text/html
Remote file does not exist -- broken link!!!