Как запретить доступ к сайту, если посетитель заходит по прямому IP машины?
NGINX в итоге что-то да ответит. Можно сделать отдельный конфиг, который будет ловить «все остальные» (default_server) запросы, в т.ч. по прямому IP:
server {
    listen       80  default_server;
    server_name  _;
    return       444;
}Здесь _ подчеркивание — не что-то волшебное, просто несуществующее имя домена.

Подробнее: nginx.org/en/docs/http/server_names.html#miscellan...
Типа такого:
server {
  listen 80;
  server_name example.com;
  ...
}