首页 > 系统相关 >Nginx 配置技巧汇总

Nginx 配置技巧汇总

时间:2024-06-16 21:58:29浏览次数:13  
标签:技巧 ssl 配置 汇总 server Nginx gzip log

前言

Nginx 是一款非常流行的高性能 web 和反向代理服务器,它以其稳定性、低资源消耗以及高并发能力而闻名。
本教程中将分享一些实用的 Nginx 配置技巧,这些技巧可以帮助你优化服务器性能和管理网络请求。

1. 配置静态文件缓存

为了提高网站加载速度和降低服务器负载,对静态文件(如图片、JS 和 CSS 文件)进行缓存是一种有效的方法。以下是一个简单的配置示例:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    access_log off;
    add_header Cache-Control "public";
}

这里我们设置了 expires 指令为 30 天,这意味着浏览器将缓存这些文件30天。我们还通过 access_log off; 禁用了访问日志,以减少磁盘 I/O。

2. 优化 SSL 配置

使用 SSL/TLS 不仅可以保证数据安全,还可以通过启用 HTTP/2 来提高性能。这是一个优化 SSL 配置的示例:

server {
    listen 443 ssl http2;
    server_name yourdomain.com;

    ssl_certificate /path/to/your/fullchain.pem;
    ssl_certificate_key /path/to/your/privkey.pem;
    
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;
    
    ssl_protocols TLSv1.2 TLSv1.3;
}

这里我们启用了 HTTP/2 并指定了 SSL 证书的位置。我们还设置了 SSL 会话缓存以提高性能,并明确了使用的加密套件和协议版本。

3. 配置反向代理

Nginx 常用作反向代理服务器以增强后端服务的安全性和性能。以下是反向代理的基本配置:

location / {
    proxy_pass http://backend_server;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

在这个配置中,所有进入 / 的请求都会被转发到 http://backend_server。同时,我们还设置了几个 HTTP 头部,以确保后端服务可以接收到正确的客户端信息。

4. 限制请求速率

为了保护应用程序免受恶意攻击,如洪水攻击,我们可以使用 Nginx 的 limit_req 模块来限制请求速率:

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    
    server {
        location /login {
            limit_req zone=one burst=5;
        }
    }
}

这里我们定义了一个名为 one 的请求速率限制区域,将允许的请求率设置为每秒 1 次请求。在 /login 路径下,我们应用了这个限制,并允许请求在短时间内爆发到 5 次请求。

5. 启用 Gzip 压缩

为了提高网站的响应速度和减少传输数据量,可以在 Nginx 中启用 Gzip 压缩。以下是相关的配置示例:

http {
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_vary on;
    gzip_min_length 10240;
    gzip_proxied expired no-cache no-store private auth;
    gzip_comp_level 6;
}

在这个配置中,我们启用了 Gzip 并指定了需要压缩的 MIME 类型。gzip_min_length 指令设置了最小压缩长度,这里是 10KB。我们还通过 gzip_proxied 指定了在何种代理情况下启用压缩。

6. 设置错误页面

为了增强用户体验,我们可以为服务器错误设置自定义错误页面。这样,当错误发生时,用户会看到一个更友好的通知,而不是默认的错误信息。

server {
    error_page 404 /custom_404.html;
    location = /custom_404.html {
        root /usr/share/nginx/html;
        internal;
    }

    error_page 500 502 503 504 /custom_50x.html;
    location = /custom_50x.html {
        root /usr/share/nginx/html;
        internal;
    }
}

这里我们为 404 和 50x 错误指定了自定义页面。internal 指令确保这些页面只能由内部重定向访问。

7. 使用地理位置阻止请求

如果需要根据用户的地理位置来允许或阻止访问某些内容,可以使用 Nginx 的 GeoIP 模块。以下是一个基础配置示例:

http {
    geo $block_country {
        default 0;
        CN 1;
    }

    server {
        if ($block_country) {
            return 403;
        }
    }
}

在这个示例中,我们阻止了来自中国(国家代码 “CN”)的所有请求。default 0 意味着默认不阻止任何国家,除非明确指定。

8. 启用访问日志和错误日志

为了对网站的访问及错误进行记录和分析,我们可以在 Nginx 中配置访问日志和错误日志:

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

默认情况下,Nginx 已经启用了日志记录,但你可以根据需要更改日志文件的位置和日志级别。

总结

Nginx 的配置灵活多变,通过适当的配置,可以显著提高网站的性能和安全性。以上只是一些基本的配置技巧,实际应用中你可能还需要根据具体需求调整配置。希望这些技巧能帮你更好地利用 Nginx 提升你的 web 应用。

标签:技巧,ssl,配置,汇总,server,Nginx,gzip,log
From: https://blog.csdn.net/m0_37890289/article/details/139727139

相关文章

  • 【Nginx】Nginx部署前端静态资源
    打包部署我们的前端工程开发好了,但是我们需要发布,那么如何发布呢?主要分为2步:前端工程打包通过nginx服务器(点击下载Nginx)发布前端工程1前端工程打包接下来我们先来对前端工程进行打包我们直接通过VSCode的NPM脚本中提供的build按钮来完整,如下图所示,直接点击即可:然后会......
  • IntelliJ IDEA 使用技巧合集
    1、查看当前类或接口的层次结构快捷键:Ctrl+H类层次结构:可以查看类的继承关系(但类看不了实现哪些接口)父类型层次结构:可以查看类继承了哪些父类和父接口,接口继承了哪些父接口子类型层次结构:可以查看当前类被哪些类继承,当前接口被哪些子接口继承和被哪些类实现在Int......
  • Nginx设置缓存后,访问网页404 问题原因及解决方案(随手记)
    原文链接:Nginx设置缓存后,访问网页404问题原因及解决方案(随手记)_nginx的html文件地址修改后404-CSDN博客 目录问题描述Nginx文件解决方案查看error_log日志问题原因修改文件并测试Nginx文件测试总结问题描述在Nginx中设置缓存expires后,结果重启nginx,网站访问404了。Nginx文件s......
  • git 命令汇总
    git使用注意事项1从别人的仓库clone下来的代码,你要推到你远程仓库,要先把远程仓库的地址,2改成你要推的你的远程的空仓库的地址3或者你直接把别人的代码forked你的仓库里,然后你再从你的仓库里面复制clone地址4到你的本地克隆下来,添加代码后,就可以直接提交了,直接提交......
  • 全面的初级入门指南,从安装到基本使用,再到一些高级功能的介绍,帮助用户在实际操作中逐步
    大纲:WindowsNmap初级使用教程1.简介什么是Nmap?Nmap的主要功能和用途安全和法律注意事项2.安装Nmap前提条件从官方网站下载Nmap安装步骤验证安装3.基本使用打开命令提示符运行你的第一个Nmap扫描示例命令:nmap目标IP地址理解基本的输出结果4.常用扫......
  • 【工具推荐】MobaXterm远程终端管理工具史上最全攻略,涉及下载、安装、字体等配置、解
    【强烈推荐】MobaXterm远程终端管理工具史上最全攻略,涉及下载、安装、字体等配置、解决中文乱码、Telnet/ssh/Serial使用教程、高级功能使用技巧等。MobaXterm是一个增强型的Windows终端。其为Windows桌面提供所有重要的远程网络终端工具(如SSH、X11、RDP、VNC、FTP、S......
  • python学习 - for循环 各种使用技巧 案例代码
    #!/usr/bin/python#-*-coding:UTF-8-*-forletterin'Python':#第一个实例print'当前字母:',letterfruits=['banana','apple','mango']forfruitinfruits:#第二个实例print'当前水果:',fr......
  • MyBatis 特殊SQL执行技巧与注意事项
    在MyBatis中,处理特殊SQL查询时,需要格外注意SQL注入的风险以及参数的绑定方式。下面将详细介绍几种常见的特殊SQL执行场景,并提供相应的MyBatis实现方式及注意事项。一、模糊查询/***根据用户名进行模糊查询*@paramusername*@returnjava.util.List<com.exampl......
  • Linux常用命令汇总
    文件与目录操作                cd命令    切换目录cd/home#切换到"/home"目录cd..#返回上一级目录cd../..#返回上两级目录cd-#返回上一次所在目录test=/homecd"$(test)"......
  • C#开发-集合使用和技巧(二)Lambda 表达式介绍和应用
    C#开发-集合使用和技巧Lambda表达式介绍和应用C#开发-集合使用和技巧介绍简单的示例:集合查询示例:1.基本语法从主体语句上区分:1.主体为单一表达式2.主体是代码块(多个表达式语句)从参数上区分1.带输入参数的Lambda表达式2.不带输入参数的Lambda表达式特殊用法:2.......