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

相关文章

  • 9.nginx使用redis用缓存

    需要使用到的第三方模块,因为在有道笔记上面,所以为办法直接给你们,需要的话给我私信或者邮件(913956964@qq.com)   1.编译安装,添加上述扩展插件 ./configure –prefix=/usr/local/nginx –without-http_memcached_module –user=www –group=www –wit…

    Nginx 2023年4月11日
    00
  • linux系统nginx如何部署vue项目(附详细步骤) Nginx实现前端访问后端本地接口

    记录一下nginx部署vue前端项目: 一、安装mobaxterm工具 mobaxterm是一个登陆服务器的工具,可以执行linux命令,长这样:      二、登陆你要部署项目的服务器 点击session——ssh—-输入ip和用户名(root),如下图:      三、登陆之后,你看到的界面如下图:      四、下面开始安装nginx 注意…

    Nginx 2023年4月15日
    00
  • nginx反向代理后abp的webapi host如何获取客户端ip?

    dotnet core 跨平台是微软伟大的创举,脱离iis后服务器成本都降低了。 问题 这不,采用abp搞了个小项目,部署到centos后发现审计日志里面的ip信息不对。 解决 这个问题在.net 4.5下处理过,记得当时是继承 WebClientInfoProvider重写GetClientIpAddress。将代码拿来后发现dotnet core下报错。…

    Nginx 2023年4月16日
    00
  • nginx安装到指定目录的方法示例

    下面是“nginx安装到指定目录的方法示例”的完整攻略。 1. 准备工作 在安装nginx之前,需要在你的系统上安装gcc编译器,以及PCRE、zlib和OpenSSL等相关的软件包。这里以CentOS 7为例,可以使用以下命令安装: sudo yum install gcc pcre-devel zlib-devel openssl openssl-dev…

    Nginx 2023年5月16日
    00
  • Ubuntu14.04下搭建LANMP环境(Apache+Nginx+MySQL+PHP)

    每回安装环境都要去百度几文章,今天索性自己写一篇,以后省去百度的麻烦了,本文介绍的是在Ubuntu14.04下搭建LANMP环境(Apache+Nginx+MySQL+PHP),如果你只想安装lamp或者lnmp都通用,直接拿去。首先分两步走:每一、先更新系统然后安装必要的依赖(这一步为以后的扩展提供铺垫)第二、安装mysql apache2 php sud…

    Nginx 2023年4月11日
    00
  • Docker安装Nginx

    1、确定自己已经安装好了Docker,如果没有安装请前往https://www.cnblogs.com/niuniu0108/p/12372531.html进行安装 2、拉去Nginx镜像包 docker pull nginx 3、查看已经拉去的镜像包 docker images    4、创建Nginx容器 docker run -itd –name m…

    Nginx 2023年4月12日
    00
  • nginx cpu高排查

    首先查看nginx的error日志,无异常打印。 cpu占用如下图所示: top – 10:05:40 up 233 days, 16:28, 4 users, load average: 25.53, 25.39, 21.62Tasks: 836 total, 20 running, 816 sleeping, 0 stopped, 0 zombieCpu…

    Nginx 2023年4月12日
    00
  • 详解Nginx中的geo模块与利用其配置负载均衡的示例

    详解Nginx中的geo模块与利用其配置负载均衡的示例 什么是Nginx中的geo模块 Nginx的geo模块是一个用于处理IP地址的模块,它能够将访问者的IP地址与预定义的地址段进行匹配,然后返回一个字符串或变量,其可以应用于各种场景,例如限制访问,屏蔽流量等。 如何使用Nginx中的geo模块 使用geo模块需要在Nginx配置文件中定义好变量和变量对应…

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