如何在 Ubuntu 22.04 上部署 Nginx 并优化以应对高流量网站教程

简介

本教程将教你如何优化 Nginx,使其能够高效地处理高流量网站。 Nginx 是一个强大且高性能的 Web 服务器,以其高效处理大量并发连接的能力而闻名,这使得它成为高流量网站的流行选择。 正确优化 Nginx 可以显著提高服务器的性能,减少加载时间,并确保你的网站能够处理大量的请求而不会崩溃。

本教程将手把手地指导你完成优化 Nginx 以应对高流量的步骤,重点关注配置调整、缓存、连接处理和安全增强。

安装和配置步骤

第一步:更新 Nginx 到最新版本

保持 Nginx 更新可以确保你拥有最新的性能改进、功能和安全补丁。

更新 Nginx 的命令:

# For Ubuntu/Debian
sudo apt update
sudo apt install nginx

# For RHEL/AlmaLinux/Rocky Linux
sudo dnf update
sudo dnf install nginx

第二步:调整工作进程和连接数

Nginx 使用工作进程来处理传入的连接。优化这些设置对于处理高流量至关重要。

编辑 Nginx 配置文件:

sudo nano /etc/nginx/nginx.conf

调整工作进程和工作连接数:

worker_processes auto;
worker_connections 1024;
  • worker_processes auto;: 这个设置会自动将工作进程的数量设置为与可用的 CPU 核心数匹配,从而优化服务器的性能。
  • worker_connections 1024;: 指定每个工作进程可以同时处理的最大连接数。这个值可以根据服务器的性能和流量进行增加。

启用多线程(可选):

events {
    worker_connections 1024;
    multi_accept on;
}
  • multi_accept on;: 这个设置允许一个工作进程一次接受多个新连接,从而在高峰流量期间提高性能。

第三步:启用 Gzip 压缩

Gzip 压缩可以减少传输数据的大小,从而缩短加载时间并减少带宽使用。

在 Nginx 配置中启用 Gzip:

sudo nano /etc/nginx/nginx.conf

http 块下添加或修改以下行:

http {
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_min_length 256;
    gzip_comp_level 5;
}
  • gzip on;: 启用 Gzip 压缩。
  • gzip_types: 指定要压缩的 MIME 类型。
  • gzip_min_length 256;: 仅压缩大于 256 字节的响应。
  • gzip_comp_level 5;: 设置压缩级别(1-9);更高的级别提供更好的压缩,但会使用更多的 CPU。

第四步:配置静态内容缓存

缓存静态内容(如图像、CSS 和 JavaScript)可以减少服务器负载并加快响应速度。

将以下行添加到 server 块中:

location ~* \\.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}
  • expires 30d;: 将浏览器缓存过期时间设置为 30 天。
  • add_header Cache-Control "public, no-transform";: 添加缓存控制头。

第五步:优化缓冲区和超时

优化缓冲区和超时可以帮助 Nginx 更有效地处理更多连接,而不会使内存过载。

编辑主要的 Nginx 配置文件:

sudo nano /etc/nginx/nginx.conf

http 块下添加以下设置:

http {
    client_body_buffer_size 16k;
    client_max_body_size 8m;
    client_header_buffer_size 1k;
    large_client_header_buffers 4 16k;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
}
  • client_body_buffer_size 16k;: 设置客户端请求的缓冲区大小。
  • client_max_body_size 8m;: 限制客户端请求的最大大小。
  • sendfile on;: 启用零拷贝文件传输,从而减少 CPU 负载。
  • tcp_nopush on;tcp_nodelay on;: 优化 TCP 连接处理以获得更好的性能。
  • keepalive_timeout 65;: 设置保持活动超时时间,允许连接保持打开 65 秒。

第六步:实现负载均衡

Nginx 可以将传入的流量分配到多个服务器上,从而提高性能和冗余。

在 Nginx 中配置负载均衡:

upstream backend {
    server backend1.example.com weight=3;
    server backend2.example.com;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
        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;
    }
}
  • upstream backend { ... }: 定义一个包含多个服务器的后端组。
  • weight=3;: 以指定的权重分配流量,将三倍的流量发送到第一个服务器。

第七步:启用连接缓存和调优

Nginx 连接缓存和调优可以显著提高它处理多个连接的方式。

nginx.confhttp 块下添加以下指令:

http {
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;

    server {
        location / {
            proxy_cache my_cache;
            proxy_cache_valid 200 1h;
            proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
            proxy_pass http://backend;
        }
    }
}
  • proxy_cache_path: 定义缓存代理响应的路径。
  • proxy_cache_use_stale: 如果后端服务器不可用,则使用过时的缓存响应。

第八步:配置安全设置

保护你的 Nginx 服务器还可以防止 DDoS 攻击并提高性能。

限制请求大小和速率限制:

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

    server {
        location / {
            limit_req zone=one burst=5;
        }
    }
}
  • limit_req_zone: 定义用于速率限制的共享内存区域。
  • rate=10r/s: 将请求限制为每秒 10 个请求。

第九步:测试并重启 Nginx

在进行更改后,测试你的 Nginx 配置是否有错误并重启服务器。

测试 Nginx 配置:

sudo nginx -t

重启 Nginx:

sudo systemctl restart nginx

结尾

优化 Nginx 以应对高流量网站涉及到调整各种设置,以提高性能、减少延迟和保护服务器。 通过遵循这些步骤,你可以确保你的 Nginx 服务器能够有效地处理大量流量。 定期监控服务器的性能,并根据需要调整设置,以保持其最佳运行状态。

我的博客:https://blog.ivwv.site

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vvw&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值