如何解决Ingress NGINX:限制访问我的某些API
入口NGINX:限制对我的某些API的访问 大家好,
我正在学习微服务架构。我使用Docker和Kubernetes。
我已经创建了一些服务,并且可以通过Ingress将它们公开。
我已经创建了两个前端。一个通过Nextjs为我的用户通过domain.com可以访问,另一个通过纯React在我的应用程序中通过manage.xxx.com可以管理我的应用程序。
现在,我有点迷路了。我想要限制对某些API的访问。例如,我有一个用户服务,允许我的用户通过我的应用程序注册和登录。
他们可以在domain.com上执行的请求示例。
- POST /api/users/signup
- POST /api/users/signin
lambda用户无法在domain.com上执行但可以通过manage.domain.com进行访问的请求示例。
- Get /api/users/all
我该如何构建?谢谢您的帮助!
解决方法
在Nginx
中,您可以使用特定IP限制访问或限制对特定文件夹的访问。
Nginx可以使用username
协议使用password
和HTTP Basic Authentication
进行访问。为此,必须使用auth_basic。
启用使用
HTTP Basic Authentication
协议的用户名和密码的验证。指定的参数用作领域。参数值可以包含变量(1.3.10、1.2.7)。特殊值off取消了从先前配置级别继承的auth_basic指令的效果。
以下Nginx示例配置:
location / {
auth_basic "closed site";
auth_basic_user_file conf/htpasswd;
}
并在auth_basic_user_file
中指定详细信息。该文件看起来像在docs示例中一样:
以以下格式指定保留用户名和密码的文件:
# comment
name1:password1
name2:password2:comment
name3:password3
您还可以将此限制与Basic Authentication with Access Restriction by IP Address
之类的其他限制混合使用。
HTTP基本认证可以与IP地址的访问限制有效地结合在一起。您可以实现至少两种方案:
- 用户必须同时经过身份验证并具有有效的IP地址
- 用户必须通过身份验证或具有有效的IP地址
两个示例都可以在Nginx documentation example中找到。
其他限制访问的麻烦是:
ngx_http_access_module
模块允许限制对某些客户端地址的访问。
ngx_http_auth_request_module
模块(1.5.4+)根据子请求的结果实现客户端授权。如果子请求返回2xx响应代码,则允许访问。如果返回401或403,则使用相应的错误代码拒绝访问。子请求返回的任何其他响应代码都被视为错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。