nginx

一、Nginx介绍

1. 什么是 Nginx

Nginx 是一个高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。与传统服务器(如 Apache)相比,Nginx 以轻量、高效、响应快著称。

2. Nginx 的常见用途

  • 静态资源服务:直接为客户端提供静态文件,如 HTML、CSS、JS、图片等。
  • 反向代理:将客户端的请求转发到后端服务器,并将后端服务器的响应返回给客户端。
  • 负载均衡:在多台服务器之间分配请求,分散流量压力。
  • 动静分离:将静态文件和动态请求分开,提升网站性能。

二、Nginx 安装

1. 使用包管理工具安装(以 CentOS 为例)

sudo yum install nginx -y

2. 启动、停止、重启 Nginx

sudo systemctl start nginx    # 启动
sudo systemctl stop nginx     # 停止
sudo systemctl restart nginx  # 重启

3. 检查 Nginx 状态

sudo systemctl status nginx

4. 测试配置文件是否正确

nginx -t

三、Nginx 配置

Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf

1. 配置结构

Nginx 的配置文件主要由指令块构成,每个指令块控制不同的功能。主要配置结构如下:

user  nginx;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

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

2. 核心配置参数

  • worker_processes:表示工作进程数,通常设置为 CPU 核数,提升并发处理能力。
  • worker_connections:每个进程的最大连接数。
  • keepalive_timeout:保持客户端连接的超时时间。
  • sendfile:开启文件传输优化,提升静态文件传输效率。

3. 反向代理配置

server {
    listen 80;
    server_name example.com;

    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;
    }
}
  • proxy_pass:指定后端服务器地址,Nginx 会将请求转发给这个地址。
  • proxy_set_header:为转发的请求设置头信息,常用来保留客户端的真实 IP。

4. 负载均衡配置

server {
    location / {
        proxy_pass http://backend;
    }
}
  • upstream:定义后端服务器集群,可以为服务器设置权重(weight),实现流量分配。
  • proxy_pass:将请求转发给 upstream 定义的服务器集群。

5. 动静分离配置

server {
    listen 80;
    server_name example.com;

    location /static/ {
        root /var/www/static/;
    }

    location / {
        proxy_pass http://backend_server;
    }
}
  • 静态文件通过 location /static/ 直接从本地目录提供。
  • 动态请求通过 proxy_pass 转发给后端处理。

四、Nginx 性能优化

1. 调整 worker_processesworker_connections

根据服务器的硬件资源,调整 worker_processes 为 CPU 核心数,worker_connections 设置为合理值(如 1024)。

worker_processes auto;
worker_connections 1024;

2. 使用 sendfiletcp_nopush

开启文件传输优化,提升静态资源的传输效率。

sendfile on;
tcp_nopush on;

3. 缓存配置

可以通过设置 expires 指令为静态资源添加缓存,减少服务器负载。

location /static/ {
    expires 30d;
}

4. 开启 Gzip 压缩

Gzip 压缩可以减少传输的数据量,提升页面加载速度。

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

五、Nginx 常见错误与排查

1. 检查配置文件语法错误

nginx -t

2. 查看日志

  • 错误日志/var/log/nginx/error.log
  • 访问日志/var/log/nginx/access.log

3. 端口占用问题

当 Nginx 无法启动时,可能是 80 端口被占用。可以使用以下命令查找占用端口的进程:

sudo netstat -tuln | grep 80

4. 提高 Nginx 最大文件描述符限制

如果遇到 “too many open files” 错误,可以在 /etc/nginx/nginx.conf 中增加以下配置:

worker_rlimit_nofile 65535;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值