Nginx - 安全控制

Nginx - 安全控制 首页 / Nginx入门教程 / Nginx - 安全控制

当我们的内容有价值时,我们理所当然地担心用户的隐私和安全,那么我们可以使用Nginx来控制和保护我们的服务和我们管理的数据的访问。

Nginx SSL Termination

SSL(安全套接字层)连接在将加密的数据从客户端计算机发送到Web服务器之前,使用证书进行身份验证。 SSL termination 是SSL offloading(解密)的一种形式,将部分责任从Web服务器转移到另一台计算机上。 SSL termination用于识别加密的数据。

在本节中,我们将描述如何在NGINX Plus和NGINX上配置HTTPS服务器。

要在我们的nginx.conf文件中设置HTTPS服务器,请将ssl参数添加到服务器块中的listen指令中,然后指定服务器证书和私钥文件的位置:

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    #...
}

服务器证书是公共实体。它被发送到连接到Nginx Plus或Nginx的每个客户端。

私钥是安全密钥或实体,应存储在具有受限访问权限的文件中。但是,nginx的主进程必须能够读取此文件。我们可以将私钥与证书存储在同一文件中。

ssl_certificate     www.example.com.cert;
ssl_certificate_key www.example.com.cert;

ssl_protocol和ssl_ciphers指令可用于要求客户端在建立连接时仅使用SSL/TLS的强版本和密码。

TCP Upstream SSL

获得SSL证书

首先,我们需要获取服务器证书和私钥,并将它们放在服务器上。可以从受信任的CA获得证书,也可以使用SSL库(例如OpenSSL)生成证书。

配置Nginx Plus

要配置SSL termination,请在Nginx Plus配置中包括以下指令:

启用SSL

要启用SSL,请为将连接传递到上游服务器组的TCP服务器定义listen指令的ssl参数:

stream {

    server {
        listen     12345 ssl;
        proxy_pass backend;
        #...
    }
}

添加SSL证书

要添加SSL证书,请使用ssl_certificate指令定义证书的路径,并在ssl_certificate_key指令中指定私钥的路径:

server {
    #...
    ssl_certificate        /etc/ssl/certs/server.crt;
    ssl_certificate_key    /etc/ssl/certs/server.key;
}

此外,ssl_protocols和ssl_ciphers指令可用于限制连接并仅添加SSL/TLS的强版本和密码:

无涯教程网

server {
    #...
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers    HIGH:!aNULL:!MD5;
}

HTTP验证访问

我们可以通过实施用户名和密码验证来限制对我们网站或网站某些部分的访问。用户名和密码取自由密码文件创建工具创建并填充的文件。

创建密码文件

要创建用户名-密码对,请使用密码文件创建实用程序,例如httpd-tools或apache2-utils:

1.首先,确认已安装httpd-tools或apache2-utils。

2.创建一个密码文件和第一个用户,运行带有-c标志的htpasswd实用程序,该标志用于创建新文件,文件路径名作为第一个参数,用户名作为第二个参数。

$ sudo htpasswd -c /etc/apache2/.htpasswd user1

按Enter,然后在提示时输入user1的密码。

链接:https://www.learnfk.comhttps://www.learnfk.com/nginx/nginx-security-controls.html

来源:LearnFk无涯教程网

3.创建其他用户名-密码对。省略-c标志,因为该文件已经存在:

$ sudo htpasswd /etc/apache2/.htpasswd user2

4.我们可以确保文件包含成对的用户名和加密的密码:

$ cat /etc/apache2/.htpasswd
user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/

HTTP验证配置

1.在我们要保护的位置内,定义auth_basic指令,并为受密码保护的区域命名。询问凭据时,该区域的名称将显示在用户名和密码对话框窗口中。

location /api {
    auth_basic "Administrator's Area";
    #...
}\

2.使用包含用户/密码对的.htpasswd文件的路径定义auth_basic_user_file指令:

location /api {
    auth_basic           "Administrator's Area";
    auth_basic_user_file /etc/apache2/.htpasswd; 
}

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Vue开发实战 -〔唐金州〕

Kafka核心技术与实战 -〔胡夕〕

跟月影学可视化 -〔月影〕

WebAssembly入门课 -〔于航〕

物联网开发实战 -〔郭朝斌〕

跟着高手学复盘 -〔张鹏〕

Spring编程常见错误50例 -〔傅健〕

程序员的测试课 -〔郑晔〕

深入浅出分布式技术原理 -〔陈现麟〕

好记忆不如烂笔头。留下您的足迹吧 :)