Как скрыть карту сайта от публичного доступа через NGINX или Cloudflare?
Здравствуйте,
на сайте есть карта сайта domain.com/sitemap_index.xml
необходимо, чтобы доступ к этой карте сайта был только у поисковых роботов (Yandex, Google, Bing, Yahoo, Duckduckgo и др.) и был закрыт для обычных пользователей.
Пожалуйста, подскажите, как это можно реализовать через NGINX или используя WAF от Cloudflare?
Разница между поисковым роботом и обычным браузером - только в юзерагенте, который легко подделать. Можно, конечно, добавить ещё и проверку принадлежности IP-адресов поисковым компаниям... но зачем, в целом? То, что проиндексировано гуглом - можно в нём легко найти.
Найти можно, но массово узнать и скопировать сразу все ссылки на сайте в удобном виде из xml нельзя. Можете подсказать, как можно реализовать на NGINX такую проверку? Может быть у вас есть какие-нибудь альтернативные идеи, как ещё можно идентифицировать, что на сайт заходит не бот через NGINX?
Dubrovin, можно пойти двумя путями - попроще и посложнее.
Первый - просто найти в интернете относительно свежие списки диапазонов гугла и остальных. Это легко, но их регулярно придётся обновлять.
Второй - использовать модуль нгинкса, который резолвит обратную DNS-запись айпишника, после чего её можно будет проверить регуляркой аналогично юзерагенту, но уже намного достовернее.
ky0, rdns нужно устанавливать отдельно? не подскажете, возможно ли его установить на уже готовую сборку (я использую NGINX вместе с ISPmanager). И если можно установить, то как это сделать, не поломав существующие конфиги?
Можете привести простой пример конфига NGINX для такой задачи?
Кстати, будет ли rdns работать, если сервер подключен через Cloudflare? Ведь все запросы идут с IP-адресов CF и реальный IP можно только получить из заголовка real_ip, который отдаёт сам CF
Алексей Хог, спасибо, попробую использовать этот вариант, если не найду что-либо лучше. А есть идеи что ещё можно заюзать кроме юзерагента, ну чтобы например поставить в условии AND ...
SagePtr, да, отлично, а если в карте сайта 10000+ ссылок и вам нужно быстро получить их все в удобном виде? И, если вы не знали, то по запросу site:имя сайта, гугл например отдаёт не все проиндексированные ссылки, а только проиндексированные релевантные в вашем регионе. Для разных устройств и локаций выдача будет отличаться.
Dubrovin, и что, кому-нибудь нужно вот взять и их все собрать? Если уж поисковик считает этот мусор нерелевантным, то сомневаюсь, что какому-то человеку он понадобится, тем более, если вы лично начнёте пихать людям палки в колёса, чтобы они до вашего контента не смогли нормально добраться. Лучше уж вообще закрыть сайт и не позориться.