895 字
4 分钟
Nginx 入门与实战:高性能网站服务架构

一、 什么是 Web 服务?#

Web 服务是允许用户通过浏览器访问互联网资源的程序。它采用 请求/响应 模型:服务器处于被动监听状态,只有接收到客户端(浏览器)的 HTTP/HTTPS 请求后,才会将资源(HTML、图片、JSON 等)返回给用户。

在 Web 服务器市场中,Nginx 因其独特的事件驱动架构,在处理高并发连接时表现远超传统的 Apache,成为目前全球最主流的 Web 服务器。


二、 Nginx 核心优势与架构#

Nginx(Engine-X)由 Igor Sysoev 开发,其核心设计目标是解决 C10K 问题(即单机同时处理一万个并发连接)。

  • 异步非阻塞 I/O:采用 epoll 模型,不像传统服务器那样为每个请求创建一个线程,极大地降低了 CPU 开销。
  • 高并发、低内存:支持数万并发连接,而内存占用仅需几百 MB。
  • 热部署:可以在不停止服务的情况下升级版本、修改配置。
  • 全能型选手:集 Web 服务器、反向代理、负载均衡、静态缓存于一体。

三、 Nginx 安装与基础操作#

1. 编译安装 (源码定制)#

对于需要开启特定模块(如 SSL 或状态监控)的场景,建议使用编译安装:

Terminal window
# 安装依赖
yum install -y gcc pcre-devel zlib-devel openssl-devel
# 下载并解压
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz && cd nginx-1.24.0
# 配置、编译、安装
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module
make && make install

2. 常用管理命令#

Terminal window
/usr/local/nginx/sbin/nginx # 启动
/usr/local/nginx/sbin/nginx -t # 检查配置文件语法是否正确
/usr/local/nginx/sbin/nginx -s reload # 平滑重启(不中断现有连接)
/usr/local/nginx/sbin/nginx -s quit # 优雅停止

四、 核心配置解析#

Nginx 的配置文件 nginx.conf 采用层级化结构:

worker_processes auto; # 建议设置为 CPU 核心数
events {
worker_connections 1024; # 单个 worker 进程支持的最大连接数
}
http {
include mime.types;
default_type application/octet-stream;
# 负载均衡池定义
upstream my_backend {
server 192.168.1.10:8080 weight=3; # 权重
server 192.168.1.11:8080;
keepalive 32; # 保持长连接
}
server {
listen 80;
server_name www.example.com;
# 1. 静态资源处理
location / {
root html;
index index.html;
}
# 2. 反向代理转发
location /api/ {
proxy_pass http://my_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 3. 状态监控 (限内部访问)
location /status {
stub_status on;
allow 127.0.0.1;
deny all;
}
}
}

五、 实战进阶:反向代理与负载均衡#

这是 Nginx 在现代架构中最常见的用法。

1. 什么是反向代理?#

  • 正向代理:代理客户端(如 VPN),隐藏客户端真实身份。
  • 反向代理:代理服务端,隐藏后端服务器的真实 IP,并提供安全防护和负载均衡。

2. 负载均衡策略#

  • 轮询 (默认):逐一分发,适用于后端性能一致的场景。
  • 权重 (Weight):按比例分发,用于后端机器配置不均。
  • IP Hash:同一客户端固定访问同一后端,解决 Session 共享问题。
  • Least Conn:优先分发给当前连接数最少的服务器。

六、 性能与安全优化技巧#

  • 启用 Gzip 压缩:减少网络传输带宽。
gzip on;
gzip_types text/plain application/json text/css;
  • 防盗链配置:防止资源被其他网站非法引用。
location ~* \.(jpg|png|gif)$ {
valid_referers none blocked *.example.com;
if ($invalid_referer) { return 403; }
}
  • 自定义错误页面
error_page 404 /404.html;
location = /404.html { root /opt/nginx/html/error; }

总结#

Nginx 不仅仅是一个简单的网页服务器,它是现代互联网架构中的“交通枢纽”。通过灵活配置虚拟主机、负载均衡和反向代理,它能显著提升网站的抗压能力和可用性。

Nginx 入门与实战:高性能网站服务架构
https://sw.rscclub.website/posts/nginxansz/
作者
杨月昌
发布于
2021-08-19
许可协议
CC BY-NC-SA 4.0