详解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日

相关文章

  • 统计Apache或nginx日志里访问次数最多的前十个IP

    1.根据访问IP统计UV awk ‘{print $1}’ access.log|sort | uniq -c |wc -l 2.统计访问URL统计PV awk ‘{print $7}’ access.log|wc -l 3.查询访问最频繁的URL awk ‘{print $7}’ access.log|sort | uniq -c |sort -nk 1 …

    Nginx 2023年4月9日
    00
  • Nginx内容缓存以及常见参数配置详析

    Nginx内容缓存以及常见参数配置详析 Nginx是一款高性能的Web服务器软件,其中有一个常用的功能是内容缓存。内容缓存是指将经常访问的内容存储在内存中,以提高响应速度并减轻后台服务器的负担。下面将详细介绍Nginx内容缓存的配置和常见的参数设置,并给出两个具体的示例。 配置Nginx内容缓存 要配置Nginx内容缓存,需要在Nginx配置文件中添加以下内…

    Nginx 2023年5月16日
    00
  • nginx 配置 vue (history模式) 项目

    vue中有两种模式 history模式(访问地址中包含 /#/ ),有的场景下(例如官网),访问地址出现该路径会比较难看,需要优化,需要切换到另外一种模式,但是nginx需要配置一下,不然刷新页面会出现404 server {listen 8075;server_name localhost;root /home/vol1/zenuo_html;locati…

    Nginx 2023年4月10日
    00
  • Nginx如何升级Openssl

    1. 什么是Openssl? 在计算机网络上,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连线者的身份。这个包广泛被应用在互联网的网页服务器上。 其主要库是以C语言所写成,实现了基本的加密功能,实现了SSL与TLS协议。OpenSSL可以运行在OpenVMS、 Microsoft Windows以及…

    Nginx 2023年4月10日
    00
  • Nginx处理http请求的11个阶段

    nginx将一个HTTP请求分为11个处理阶段,这样做让每个HTTP模块可以仅仅专注于完成一个独立,简单的功能。而一个请求的完整处理过程可以由多个HTTP模块共同合作完成。可以极大的提高多个模块合作的协同性,可测试性,可扩展性。换言之,nginx在处理每一个http请求,和配置文件上的顺序没有关系。 post-read 接受到完整的http头部后,读取请求内…

    Nginx 2023年4月10日
    00
  • nginx服务器配置tp框架,访问路径始终不出现的问题

    原文连接:https://www.cnblogs.com/adu0409/articles/3359160.html 这个问题困了小半个月,今天终于找到原因了,记录一下。 问题描述:在nginx服务器的搭建时,引进tp框架,但是无论访问什么路径,始终是/。 解决过程:查找底层代码,发现request类使用了path方法,一步步追踪打印,发现是$_SERVER…

    Nginx 2023年4月13日
    00
  • nginx配置与常见错误解决方法

    1、下载:到官网下载nginx稳定版,解压到e盘根目录;到官网下载php非安装版,解压到e盘根目录。2、配置:打开nginx.conf,修改相关位置如下,location / {            root   html; #网站根目录            index  index.html index.htm index.php;          …

    Nginx 2023年4月12日
    00
  • 前端通过Nginx反向代理解决跨域问题 前端通过Nginx反向代理解决跨域问题

      在前面写的一篇文章SpringMVC 跨域,我们探讨了什么是跨域问题以及SpringMVC怎么解决跨域问题,解决方式主要有如下三种方式: JSONP CORS WebSocket 可是这几种方式都是基于服务器配置的,即对于自己的网站是可以通过这几种方式解决的,可是现在遇到另一个需求(前面提到过,写扇贝插件,我们不能更改扇贝的服务器配置,也不能发短信叫他们…

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