С точки зрения безопасности, я считаю, что по умолчанию форумы Discourse не должны быть видны при прямом переходе к IP-адресу в браузере.
Несколько причин:
- Позволяет использовать сайт без HTTPS как для пользователей, так и при первоначальной настройке администратором.
- Раскрывает адрес исходного сервера, что плохо, если вы используете Cloudflare или аналогичные сервисы для защиты IP-адреса исходного сервера от DDoS-атак или попыток взлома, особенно если хакеры считают сервер высокоценной целью. Существуют люди, запускающие ботов для сканирования всех диапазонов IP-адресов, принадлежащих веб-хостингам.
Кроме того, установщик Discourse теперь проверяет, правильно ли настроен домен/поддомен, и не продолжит установку, если это не так.
Всё, что нужно добавить в самый конец файла /etc/nginx/conf.d/discourse.conf (внутри контейнера Docker), это:
server {
listen 80;
server_name 1.1.1.1;
server_tokens off;
return 404;
}
Где 1.1.1.1 — это публичный IP-адрес вашего сервера. Вероятно, существует более элегантный способ указать IP-адрес, чем его жёсткое кодирование. Я пробовал несколько вариантов, но не смог заставить их работать.
Это хорошо работает у меня (включая проксирование через Cloudflare). Я не могу придумать много случаев, когда прямой веб-доступ по IP-адресу был бы полезен или необходим. Похоже, что запрет такого доступа — довольно распространённая практика. Буду рад услышать любые аргументы против такого подхода!