我使用 keycloak,它在公共 IP 上运行,管理控制台也可通过公共 IP 访问,我使用 nginx Web 服务器。我有一个要求,即管理控制台只能在私有 IP 上访问。其他 URL 应在公共 IP/域名上正常工作。
现在,例如:域名/auth和域名/auth/领域/admin并且其他网址是可公开访问的。
要求:仅此管理控制台域名/auth/领域/adminurl 只能通过私有 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 {
...
}
}
...
希望有所帮助。