网站首页 > 技术教程 正文
如何用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-10 【Nginx基础】Nginx对用户名和密码做限制的实现示例
- 2024-10-10 Centos7 环境下生成自签名 SSL 证书的具体过程:
- 2024-10-10 Nginx学习笔记(07) 限制特定用户访问的 auth_basic 模块
- 2024-10-10 elasticsearch 集群身份认证与用户鉴权
- 2024-10-10 学成在线 类慕课网 微服务教育网-第17天-讲义-用户认证 Zuul
- 2024-10-10 CA双向认证完整实现步骤(证书双向认证流程)
- 2024-10-10 自建CA和nginx实现ssl双向认证(nginx证书双向认证)
- 2024-10-10 Nginx 结合服务端实现下载文件鉴权
- 2024-10-10 「Kubernetes」第九章:认证(certified kubernetes admin)
- 2024-10-10 免费https证书申请及部署教程(https://sq.cfca.com.cn数字证书申请平台)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)