Nginx
外观
Developer(s) | Nginx, Inc. (现为F5 Networks所有) |
---|---|
Initial release | October 4, 2004 |
Repository |
|
Written in | C |
Engine | |
Operating system | 类Unix, Windows |
Type | Web服务器, 反向代理, 负载均衡, HTTP缓存 |
License | BSD-like |
Website | nginx |
Nginx(发音为"engine x")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3代理服务器。由俄罗斯程序员Igor Sysoev开发,最初是为解决C10k问题(即单机同时处理1万个连接的问题)而设计。
历史[编辑 | 编辑源代码]
Nginx由Igor Sysoev于2002年开始开发,并于2004年首次公开发布。2011年,Nginx, Inc.公司成立,提供商业支持和Nginx Plus产品。2019年,Nginx, Inc.被F5 Networks以6.7亿美元收购。
特性[编辑 | 编辑源代码]
Nginx以其高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。主要特性包括:
- 处理静态文件、索引文件以及自动索引
- 反向代理与负载均衡
- FastCGI、uWSGI、SCGI支持
- 模块化架构
- SSL和TLS支持
- 虚拟主机支持
- URL重写和重定向
- 访问控制
- gzip压缩
- 日志记录
- 带宽限制
架构[编辑 | 编辑源代码]
Nginx采用事件驱动、异步非阻塞的架构,这使得它能够高效地处理大量并发连接,同时保持低内存占用。
配置[编辑 | 编辑源代码]
Nginx的配置文件通常位于/etc/nginx/nginx.conf
,采用层次化的指令结构。基本配置示例如下:
# 全局配置
user nginx;
worker_processes auto;
events {
worker_connections 1024;
}
http {
# HTTP服务器配置
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
常用场景[编辑 | 编辑源代码]
静态内容服务[编辑 | 编辑源代码]
Nginx非常适合提供静态内容,如HTML、CSS、JavaScript和图像文件。
反向代理[编辑 | 编辑源代码]
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;
}
}
负载均衡[编辑 | 编辑源代码]
Nginx支持多种负载均衡算法:
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
HTTPS配置[编辑 | 编辑源代码]
配置SSL/TLS加密:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
性能优化[编辑 | 编辑源代码]
- 调整
worker_processes
和worker_connections
- 启用
gzip
压缩 - 配置缓存头
- 使用
sendfile
指令 - 限制客户端带宽
- 启用keepalive连接
与Apache的比较[编辑 | 编辑源代码]
特性 | Nginx | Apache |
---|---|---|
架构 | 事件驱动 | 进程/线程驱动 |
内存使用 | 较低 | 较高 |
静态内容性能 | 优秀 | 良好 |
动态内容处理 | 需要外部处理器 | 内置模块支持 |
配置语法 | 声明式 | 过程式 |
.htaccess支持 | 不支持 | 支持 |
扩展模块[编辑 | 编辑源代码]
Nginx支持通过模块扩展功能,常见模块包括:
- ngx_http_rewrite_module - URL重写
- ngx_http_ssl_module - SSL/TLS支持
- ngx_http_gzip_module - gzip压缩
- ngx_http_proxy_module - 代理功能
- ngx_http_upstream_module - 负载均衡