0
点赞
收藏
分享

微信扫一扫

Nginx核心功能

杨沐涵 04-30 09:00 阅读 3

1. HTTP 服务器

静态资源处理

Nginx 能够高效地处理静态资源请求,像 HTML、CSS、JavaScript 文件以及图片等。它采用了事件驱动和异步 I/O 模型,能同时处理大量并发连接,响应速度快。

nginx

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    location / {
        try_files $uri $uri/ /index.html;
    }
}

上述配置里,root 指令明确了静态文件的根目录,try_files 指令会按顺序查找文件,若文件不存在则返回 index.html

虚拟主机

Nginx 支持多种类型的虚拟主机配置,能够在同一台服务器上托管多个网站。


  • 基于域名的虚拟主机

nginx

server {
    listen 80;
    server_name site1.com;
    root /var/www/site1;
}

server {
    listen 80;
    server_name site2.com;
    root /var/www/site2;
}


借助 server_name 指令,Nginx 可依据请求的域名将请求导向不同的网站。


  • 基于 IP 的虚拟主机

nginx

server {
    listen 192.168.1.100:80;
    root /var/www/ip_site1;
}

server {
    listen 192.168.1.101:80;
    root /var/www/ip_site2;
}


通过监听不同的 IP 地址,Nginx 能区分不同的虚拟主机。

2. 反向代理

基本原理

反向代理是指代理服务器接收客户端的请求,再将请求转发到后端服务器,之后把后端服务器的响应返回给客户端。客户端并不知道真正处理请求的是后端服务器。

配置示例

nginx

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend_server;
    }
}


proxy_pass 指令将所有请求转发到 backend_server

高级配置

nginx

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 指令添加请求头,让后端服务器能够获取客户端的真实信息。

3. 负载均衡

负载均衡算法

  • 轮询:按顺序依次将请求分配到后端服务器。

nginx

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
}

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend;
    }
}


  • 加权轮询:为不同的后端服务器分配不同的权重,权重越高,分配到的请求就越多。

nginx

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


  • IP 哈希:依据客户端的 IP 地址进行哈希计算,将同一客户端的请求始终分配到同一台后端服务器。

nginx

upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}

健康检查

Nginx 可对后端服务器进行健康检查,若某台服务器不可用,就不再向其分配请求。

nginx

upstream backend {
    server backend1.example.com max_fails=3 fail_timeout=30s;
    server backend2.example.com max_fails=3 fail_timeout=30s;
}


max_fails 表示允许的最大失败次数,fail_timeout 表示失败后的不可用时间。

4. SSL/TLS 加密

配置 HTTPS

nginx

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    root /var/www/html;
    location / {
        try_files $uri $uri/ /index.html;
    }
}


ssl_certificate 和 ssl_certificate_key 分别指定 SSL 证书和私钥的路径。

优化 SSL 配置

nginx

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;


这些指令用于选择支持的 SSL 协议和加密套件,提升安全性。

5. HTTP 缓存

静态资源缓存

nginx

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
    }
}


expires 指令设置静态资源的缓存时间,这里设置为 30 天。

反向代理缓存

nginx

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_cache my_cache;
        proxy_pass http://backend_server;
    }
}


proxy_cache_path 指令定义缓存路径和参数,proxy_cache 指令启用反向代理缓存。

6. 邮件代理

支持的协议

Nginx 支持 SMTP、POP3 和 IMAP 等邮件协议,可作为邮件服务器的前端代理。

配置示例

nginx

mail {
    server {
        listen     25;
        protocol   smtp;
        smtp_auth  login plain;
        proxy on;
    }
    server {
        listen     110;
        protocol   pop3;
        proxy on;
    }
    server {
        listen     143;
        protocol   imap;
        proxy on;
    }
}


此配置让 Nginx 监听邮件协议端口,并将请求转发到后端邮件服务器

举报

相关推荐

0 条评论