网站首页 > 技术教程 正文
如何用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数字证书申请平台)
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
- 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
- 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
- 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
- 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- 最近发表
- 
- Excel计算工龄和年份之差_excel算工龄的公式year
- Excel YEARFRAC函数:时间的"年份比例尺"详解
- 最常用的10个Excel函数,中文解读,动图演示,易学易用
- EXCEL中如何计算截止到今日(两个时间中)的时间
- 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- Excel日期函数之DATEDIF函数_excel函数datedif在哪里
- Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
 
- 标签列表
- 
- 下划线是什么 (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)
 

本文暂时没有评论,来添加一个吧(●'◡'●)