Правило Nginx, ограничивающее отображение конкретной страницы только на частном IP
Я использую keycloak, и он работает на общедоступных ip и консоли администратора, также доступных через общедоступный ip, и использую веб-сервер nginx. У меня есть требование, чтобы консоль администратора была доступна только на частном IP. Другие URL должны нормально работать на публичных IP / доменных именах.
Теперь Ex: имя_домена / auth и имя_домена / 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
}
}
1 ответ
Вы можете использовать несколько записей сервера и 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 {
...
}
}
...
Надеюсь, это поможет.