1) Отсутствует hsts заголовок
2) Не указаны SSL протоколы, стоит явно прописать TLS, т.к. остальные потенциально не безопасные
3) Отсутствует перечисление ciphers (потенциально допустимы слабые и небезопасные алгоритмы)
4) Отсутствует ключик диффи
5) Используется потенциально небезопасная и устаревшая версия PHP
6) Включена (не отключена) передача заголовков сервера (т.е. информация о том, что используется nginx)
7) Отсутствуют OCSP Stapling настройки (насколько я помню - могут возникнуть проблемы с отозванными сертификатами x.509)
По поводу настройки самих урлов - хз. Самая лучшая защита и самая адекватная - это просто хранить в web-корне только то, что может быть доступно наружу, как делают все адекватные фреймы, например:
https://github.com/laravel/laravel/tree/master/public
Это значит, что в вашем случае их всего два должно быть - это index и json (второй просто прикрыт по айпишнику), остальные вариант ничего не гарантируют.
Тоже самое и с phpmyadmin. Зачем он? Неужели workbench, phpstorm или ещё что с соединением сквозь ssh туннель по сертификату будет менее удобен или безопасен? Не верю.
С админкой, соглашусь, но там, кажется, всё в пределах нормы. Только, кажется, имеет смысл перенастроить каким-нибудь таким (не обязательно прям так, ибо я не проверял как работает пример) образом:
location ~ /admin/*.\.php$ {
try_files $uri $uri/ /admin/index.php?$query_string =404;
// ...
}
Т.е. чтобы любой запрос куда-либо отправлял на его index. Не?