详解nginx服务器中的安全配置

下面为你详细讲解怎么在Nginx服务器中配置安全措施来保护你的网站。具体来说,包括三个部分:

  1. 基本安全措施:禁止目录遍历、防止DDoS攻击以及过滤Webshell。
  2. SSL证书:为你的网站添加HTTPS支持。
  3. 防盗链:设置防盗链机制,防止你的图片等资源被其他网站盗用。

下面,我们将详细讲解这三个部分。

基本安全措施

禁止目录遍历

目录遍历可以让攻击者访问你网站上的敏感文件,在Nginx中可以通过配置实现禁止目录遍历。在http块中添加如下配置:

http {
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

以上配置禁止访问以.开头的文件和目录,例如.htaccess

防止DDoS攻击

在Nginx中可以通过限制速度和连接数来预防DDoS攻击。

http {
    limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;
    limit_conn_zone $binary_remote_addr zone=conn_zone:10m;

    server {
        listen 80;
        server_name example.com;

        location / {
            limit_conn conn_zone 10;
            limit_req zone=req_zone burst=5;
        }
    }
}

以上配置的含义是:每个IP最大连接数为10,每秒最大请求数为10,超过10个请求会被暂时拒绝,每个请求的最大延迟为5秒。这里使用$binary_remote_addr表示客户端IP地址,req_zoneconn_zone是两个自己定义的名称,代表限制请求数和连接数的内存区域。

过滤Webshell

Webshell是以php或其他脚本语言编写的一种恶意程序,攻击者可以通过Webshell窃取网站数据、利用网站服务器进行DDoS攻击等。因此,保护服务器免受Webshell攻击是十分必要的。Nginx提供了防止Webshell攻击的模块ngx_http_secure_link_module

http {
    secure_link_md5 secretkey$uri$remote_addr$secure_link_expires;
    server {
        listen 80;
        server_name example.com;
        root /usr/share/nginx/html;

        location / {
            secure_link $arg_md5,$arg_expires;
            if ($secure_link = "") { return 403; }

            if ($secure_link_expires < $date_gmt) { return 403; }

            # access valid, for example:
            try_files $uri $uri/ /index.php$is_args$args;
        }
    }
}

以上配置使用了ngx_http_secure_link_module模块来验证URL链接的真实性。secure_link指令用于验证签名和链接是否过期。如果验证不通过,返回403错误。

SSL证书

为了加强网站的安全性,我们需要配置SSL证书。在Nginx中配置SSL证书需要安装OpenSSL库和Nginx的SSL模块。

安装OpenSSL和Nginx

# 安装OpenSSL
yum install openssl

# 下载Nginx
wget https://nginx.org/download/nginx-1.16.0.tar.gz
tar -xzvf nginx-1.16.0.tar.gz
cd nginx-1.16.0

# 安装Nginx的依赖
yum install gcc pcre-devel zlib-devel

# 编译Nginx
./configure --with-http_ssl_module
make
make install

生成SSL证书

# 生成私钥
openssl genrsa -out server.key 2048

# 生成证书请求文件
openssl req -new -key server.key -out server.csr

# 生成证书文件
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

配置Nginx的SSL证书

http {
    server {
        listen 443 ssl;
        ssl_certificate /path/to/server.crt;
        ssl_certificate_key /path/to/server.key;

        location / {
            # your app config goes here
        }
    }
}

以上配置指定了监听端口为443(默认的HTTPS端口),指定了SSL证书和私钥的路径。

防盗链

防盗链是一种常用的资源保护策略,Nginx提供了ngx_http_referer_module模块来实现该功能。

http {
    server {
        listen 80;
        server_name example.com;
        root /usr/share/nginx/html;

        location /img/ {
            valid_referers none blocked .example.com;
            if ($invalid_referer) {
                return 403;
            }
        }
    }
}

以上配置为/img/目录下的资源设置了防盗链规则,允许任何来源访问example.com的页面,但是禁止直接访问。

这里解释一下valid_referers指令的参数含义:

  • none:禁止所有网站访问该资源。
  • blocked:禁止所有直接链接该资源的地址。
  • example.com:允许example.com网站访问。

如果访问者的Referer为空或者没有在valid_referers中指定的网站,则访问无效,返回403错误。

以上就是本次攻略的内容,包括了Nginx服务器的基本安全措施、SSL证书配置和防盗链设置。希望对你有所帮助,如有不懂之处可以随时询问哦~

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解nginx服务器中的安全配置 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Nginx处理请求时的匹配规则详析

    那我就来详细讲解 “Nginx处理请求时的匹配规则详析” 的攻略。 Nginx处理请求时的匹配规则详析 在了解Nginx的匹配规则之前,我们需要先了解一下Nginx中常见的三种location区块: 1. 精确匹配 location = /path { #对/path精确匹配,只有访问该路径,才会触发该location区块 } 这种匹配规则最为严格,只有完全…

    Nginx 2023年5月16日
    00
  • 使用Nginx部署Vue项目全过程及踩坑记录

    以下是使用Nginx部署Vue项目的详细攻略以及可能出现的踩坑记录。 前置准备 安装Node.js和Vue CLI 在开始之前,需要安装Node.js和Vue CLI工具。可以在Node.js官网下载安装包,然后使用npm安装Vue CLI: # 安装Vue CLI npm install -g @vue/cli 安装Nginx 需要在服务器上安装Nginx…

    Nginx 2023年5月16日
    00
  • Nginx配置SSL报错 nginx: [emerg] unknown directive “ssl”

        出现如图所示错误,处理办法如下 去nginx解压目录下执行 ./configure –with-http_ssl_module 如果报错 ./configure: error: SSL modules require the OpenSSL library.则执行 yum -y install openssl openssl-devel ./con…

    Nginx 2023年4月11日
    00
  • Nginx 实现灰度发布的三种方法总结

    下面我将对“Nginx 实现灰度发布的三种方法总结”的完整攻略进行详细讲解。该攻略包含以下内容: 一、什么是灰度发布 灰度发布是指在生产环境中,只对部分用户或部分功能实施新版本的发布。它可以让新版本在一部分用户或功能中较为安全地进行测试和验证,避免出现大规模的故障和影响到所有用户。 二、Nginx实现灰度发布的三种方法 1. 根据请求头实现灰度发布 该方法是…

    Nginx 2023年5月16日
    00
  • nginx 499 状态码优化

    在grafana界面中发现不少499的状态码,在网上了解到出现499的原因大体都是说服务端处理时间过长,客户端主动关闭了连接。     既然原因可能是服务端处理时间太长了,看一下upstream_response_time时间可以了解到后端程序处理了多久。 先了解一下什么是upstream_response_time和request_time分别是什么: r…

    2023年4月10日
    00
  • 利用nginx为多个xxljob配置统一入口

      如何利用nginx为多个xxljob配置统一入口,而且用户登录后ip固定不会飘?   首先,需要确保这些xxljob的上下文路径是一致的,上下文路径可以在根目录下xxl-job-admin/src/main/resources/application.properties中的server.servlet.context-path字段得知,默认为/xxl-…

    Nginx 2023年4月12日
    00
  • [日常] nginx访问频率限制

    去年的事,随便记记 ========================================================================= 2017年3月15日 记录:   nginx限制请求频率: server外面加上: limit_req_zone $binary_remote_addr zone=one:10m rate=1…

    Nginx 2023年4月9日
    00
  • Docker容器安装nginx基本步骤Yum版

    首先我们来科普一下nginx: Nginx (engine x) 是一个高性能的HTTP和俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。 其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部