Я создал простой экземпляр micro EC2 на основе AMI Amazon Linux для тестирования приложения, пока я его разрабатываю, но случается, что каждый день он перестает отвечать, давая мне ошибку 503. У него есть собственный домен, установленный с Cloudfront.
В AWS экземпляр отображается зеленым цветом и «работает», но даже соединение через SSH невозможно, пока я не остановлюсь и не запущу его снова (также параметр перезагрузки экземпляра просто ничего не делает).
Когда я проверяю журналы HTTPD, я вижу большой список того, что похоже на попытки бота найти уязвимые страницы:
[Wed May 22 08:10:17.996810 2019] [:error] [pid 26550] [client ...] script '/var/www/html/pop.php' not found or unable to stat
[Wed May 22 08:10:21.276648 2019] [:error] [pid 26550] [client ...] script '/var/www/html/ok.php' not found or unable to stat
[Wed May 22 08:10:21.454696 2019] [:error] [pid 26550] [client ...] script '/var/www/html/test.php' not found or unable to stat
[Wed May 22 08:10:21.641293 2019] [:error] [pid 26550] [client ...] script '/var/www/html/conf.php' not found or unable to stat
[Wed May 22 08:10:22.187275 2019] [:error] [pid 26550] [client ...] script '/var/www/html/dashu.php' not found or unable to stat
...
Кто-нибудь знает простое решение, чтобы избежать этого и заставить этот простой тестовый сервер работать без необходимости перезагружать его каждый день?
В процессе разработки вы можете ограничить доступ к экземпляру только своим IP-адресом (ами) - установите их в экземпляре Группа безопасности. Это предотвратит доступ посторонних лиц, кроме вас.
С другой стороны, экземпляр не должен давать сбой только потому, что он получает несколько случайных запросов. Может быть проблема с вашим кодом - возможно, утечка памяти? Сейчас хорошее время, чтобы исправить это, поскольку, как вы говорите, вы все еще на стадии разработки.
Надеюсь, это поможет :)
Если у вас уже включен CloudFront, вы можете добавить защиту WAF, хотя для этого варианта использования это кажется излишним. Вы также можете попробовать использовать NGINX вместо Apache, который будет легче и, следовательно, с меньшей вероятностью исчерпает ресурсы.
Дает ли CloudWatch какое-либо представление о причинах сбоя? Возможно, вы сможете определить, какой ресурс исчерпывается. Это может быть количество подключений или проблема с пропускной способностью, а не память или процессор.
Другой вариант - использовать CloudFlare вместо CloudFront, что должно обеспечить лучшую защиту от ботов сразу из коробки и дешевле.