Как настроить Ngnix для достижения любой возможной ошибки сайта для тестирования [закрыто]

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

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

# Testing for Error 502 - Bad Gateway
location /testing {
            fastcgi_pass unix:/does/not/exist;
    }
0
задан 24 November 2017 в 10:38
2 ответа

401 Unauthorized

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

Для этого вы можете добавить новое местоположение и ограничить его с помощью htaccess. Создайте файл htaccess с htpasswd -c /etc/nginx/htpasswd/htpasswd.domain имя пользователя . Затем добавьте новое местоположение в конфигурацию 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 Not Found

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

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

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

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


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

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

1
ответ дан 4 December 2019 в 16:05

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

Пример на 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!!!
0
ответ дан 4 December 2019 в 16:05

Теги

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