网站首页 > 精选教程 正文
如何用NGINX的基本认证来保护你的应用程序
请注意,这只是一个简单的案例,你应该避免在生产中使用这种设置。然而,有时你需要暂时用基本认证来保护你的服务(例如用于开发目的)。这可能是一个简单的应用程序的演示,一些使用云供应商的测试,等等。
我们现在要做什么呢?
我们将建立一个NGINX代理,而不是将你的应用程序直接暴露给世界,它将控制流量并通过基本的认证来保护系统。
运行NGINX的最简单的方法(在我看来)是使用容器,所以这就是本文所关注的方法。这个假设也使得为Kubernetes设置调整这个例子变得容易。
配置是关键
下面是配置你的NGINX实例以启用基本认证的模板。将该文件作为default.conf.template保存在主机上的某个路径。
upstream application_addr {
server ${APP_ADDRESS};
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
server_name sgx-demo;
error_page 500 502 503 504 /50x.html;
location / {
auth_basic "Authentication required";
auth_basic_user_file /etc/authentication/.htpasswd;
}
}
如果你的应用程序使用WebSockets与后端通信,你也可以在server.location部分下多加几行来处理它:
proxy_pass http://${APP_ADDRESS};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
为了处理用户,创建一个.htpasswd。谷歌一下如何使用你的操作系统制作.htpasswd文件。(你也可以使用一些在线工具,但是,强烈不建议这样做,应该只用于测试目的)。
现在以首选方式运行NGINX容器。在运行时:
- 设置APP_ADDRESS环境变量的值,指向你想隐藏的应用程序(例如localhost:81)。
- 将default.conf.模板挂载到/etc/nginx/templates/default.conf.模板中。
- 将.htpasswd文件挂载到/etc/authentication/.htpasswd。将default.conf.模板挂载到/etc/nginx/templates/default.conf.模板中。
Docker cli例子
下面是你如何在docker中运行NGINX的方法:
docker run --name nginxproxy --rm --network=host -p 80:80 -e APP_ADDRESS=localhost:8000 \
-v ${PWD}/templates/default.conf.template:/etc/nginx/templates/default.conf.template \
-v ${PWD}/authentication/.htpasswd:/etc/authentication/.htpasswd \
nginx
在这个例子中,你可以找到--network=host开关。如果你的原始应用程序也在容器中运行,请删除它(推荐)。
记住要改变APP_ADDRESS变量。
Docker compose示例
version: "3.9"
name: demo
services:
nginx:
image: nginx
volumes:
- /host_path_with_templates/:/etc/nginx/templates/
- /host_path_with_authentication/:/etc/authentication/
ports:
- "80:80"
environment:
- APP_ADDRESS=app-address.com
- NGINX_HOST=example.com
- NGINX_PORT=80
根据需要改变环境部分的数值。
最后的话
我们使用NGINX创建了一个简单的代理服务器,使用基本认证保护我们的应用程序。为了完全保护应用程序,我们需要设置与NGINX的HTTPS连接,所以需要额外的配置。本文中的例子没有涵盖这个主题,应该进行扩展,所以在目前的形式下,它不适合于生产解决方案。
猜你喜欢
- 2024-10-07 Centos7 环境下生成自签名 SSL 证书的具体过程:
- 2024-10-07 elasticsearch 集群身份认证与用户鉴权
- 2024-10-07 学成在线 类慕课网 微服务教育网-第17天-讲义-用户认证 Zuul
- 2024-10-07 CA双向认证完整实现步骤 https双向认证证书
- 2024-10-07 SpringCloud Gateway 身份认证 springcloud认证中心
- 2024-10-07 Nginx配置https实现加密认证 nginx http跳转https
- 2024-10-07 Kibana采用Nginx做登陆认证 nginx cookie 用户认证
- 2024-10-07 如何用Nginx设置密码认证 如何用nginx设置密码认证
- 2024-10-07 在Nginx中设置认证 nginx用户认证
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)