Я разрабатываю веб-сайт с использованием фреймворка Django и Nginx. Хотел бы создать ложную системную ошибку и проследить, как реагирует моя система.
Это хорошая статья, однако она создает только ложную ошибку Error 502. Я бы хотел протестировать другие страницы ошибок (HTTP403, HTTP404, HTTP405 или обычные страницы ошибок) перед тем, как начать работу.
# Testing for Error 502 - Bad Gateway
location /testing {
fastcgi_pass unix:/does/not/exist;
}
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 в качестве последнего шага. для каждой модификации.
Теоретически достаточно, если вы просто добавляете все местоположения и всегда возвращаете разные коды ошибок .
Разместите на сервере небольшой сценарий, который позволит вам указать код ошибки, которую вы хотите проверить.
Пример на 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!!!