
Tengo la siguiente situación:
- Servicio que se ejecuta con acceso seguro (usuario/contraseña) a través de una aplicación web en:
Dentro de esta aplicación (embed/iframe/etc) configuro algunos servicios que incorporan datos de un subdominio.
- Servicios de subdominio que deben integrarse:
Estas aplicaciones incorporan muchos servicios en "data.myapp.com", como "data.myapp.com/sevice1", "data.myapp.com/sevice2", etc.
Pero el problema es que:
NO QUIERO acceso directo al subdominio "data.myapp.com"... Quiero permitir todo el tráfico sólo si la fuente proviene de la URLhttps://myapp.com.
Así es como se ve mi archivo de configuración de 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/ {...}
}
Pero parece que sólo puedo usar allow
con dirección IP y en ese caso el servidor tiene la misma dirección IP.
¿Hay alguna manera de bloquear el acceso directo al nombre_servidor actual y permitirlo solo desde otro dominio?
¡Gracias por cualquier ayuda!
ACTUALIZAR
He logrado en parte bloquear el acceso directo a mi URL data.myapp.com usando el encabezado de referencia... pero esto NO ES SEGURO en absoluto, una vez que podamos manipular el encabezado de referencia...
Sigue el código:
server {
[...]
if ( $http_referer !~* 'myapp.com' ) {
return 404;
}
[...]
}