Я использую keycloak, и он работает на общедоступном IP и консоли администрирования, также доступной через общедоступный IP, и я использую nginx веб-сервер. У меня есть требование, чтобы консоль администрирования была доступна только на частном IP, Другой URL должен обычно работать над общедоступным IP/доменным именем.
Теперь, Исключая: domain_name/auth и domanin_name/auth/realm/admin и другие URL доступны публично.
Требование: Только эта консоль администрирования domanin_name/auth/realm/admin URL должна быть доступной только через частный IP.
Это может быть сделано через правила nginx?
Любой помогает мне на этом.
Ниже конфигурация, которую я пробую, но она не работает как ожидалось.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
rewrite ^/(.*) /$1 break;
proxy_ignore_client_abort on;
proxy_pass http://localhost:8880;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /auth/realms/master {
allow 127.0.0.1;
deny all;
#try_files $uri $uri/ =404
}
}
Можно использовать несколько записей сервера и allow
и deny
, как Вы уже сделали:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location /auth/realm/admin {
deny all;
...
}
}
server {
listen 80;
server_name <your-private-ip>;
location /auth/realm/admin {
...
}
}
...
Hope, которая помогает.