前言:
眼前看官们对“服务器需要做哪些认证”大致比较关注,同学们都想要知道一些“服务器需要做哪些认证”的相关内容。那么小编同时在网络上收集了一些有关“服务器需要做哪些认证””的相关文章,希望咱们能喜欢,你们一起来了解一下吧!如何用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连接,所以需要额外的配置。本文中的例子没有涵盖这个主题,应该进行扩展,所以在目前的形式下,它不适合于生产解决方案。
标签: #服务器需要做哪些认证