龙空技术网

如何用NGINX的基本认证来保护你的应用程序

吉祥庄钢铁侠 22

前言:

眼前看官们对“服务器需要做哪些认证”大致比较关注,同学们都想要知道一些“服务器需要做哪些认证”的相关内容。那么小编同时在网络上收集了一些有关“服务器需要做哪些认证””的相关文章,希望咱们能喜欢,你们一起来了解一下吧!

如何用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 {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: demoservices:  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连接,所以需要额外的配置。本文中的例子没有涵盖这个主题,应该进行扩展,所以在目前的形式下,它不适合于生产解决方案。

标签: #服务器需要做哪些认证