
У меня следующая ситуация:
- Сервис работает с защищенным доступом (пользователь/пароль) через веб-приложение по адресу:
Внутри этого приложения (embed/iframe и т. д.) я настраиваю некоторые сервисы, которые встраивают данные из поддомена.
- Службы поддоменов, которые следует внедрить:
Эти приложения встраивают множество сервисов в «data.myapp.com», например «data.myapp.com/sevice1», «data.myapp.com/sevice2» и т. д.
Но проблема в том, что:
Я НЕ ХОЧУ прямой доступ к поддомену "data.myapp.com"... Я хочу разрешить весь трафик только в том случае, если источник находится на URL-адресеhttps://myapp.com.
Вот как выглядит мой файл конфигурации nginx:
server {
server_name myapp.com;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html;
}
server {
server_name data.myapp.com;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
allow myapp.com;
deny all;
location /service1/ {...}
location /service2/ {...}
location /service3/ {...}
}
Но, похоже, я могу использовать только allow
IP-адрес, и в этом случае сервер имеет тот же IP-адрес.
Есть ли способ заблокировать прямой доступ к текущему имени сервера и разрешить его только с другого домена?
Спасибо за любую помощь!
ОБНОВЛЯТЬ
Мне частично удалось заблокировать прямой доступ к моему URL-адресу data.myapp.com с помощью заголовка referer... но это совсем НЕ БЕЗОПАСНО, поскольку мы можем манипулировать заголовком referer...
Следуйте коду:
server {
[...]
if ( $http_referer !~* 'myapp.com' ) {
return 404;
}
[...]
}