本文共 2696 字,大约阅读时间需要 8 分钟。
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,由俄罗斯工程师 Igor Sysoev 开发。它最初于 2002 年发布,旨在解决 Apache 在高并发环境下的性能问题。与 Apache 等传统服务器不同,Nginx 采用事件驱动架构,能够处理数百万级别的 TCP 连接,性能显著优于传统服务器。
Nginx 的成功源于其开源性质和高度模块化设计。支持第三方模块扩展,且跨平台运行,能够在 Linux、Windows、FreeBSD 等操作系统上运行。这些特点使其成为现代 Web 服务的理想选择。
Nginx 早期主要作为反向代理,但随着技术发展,功能逐渐扩展,成为一个多功能的 Web 服务器。其主要功能包括:
# 用户设置,默认为 nobodyuser nobody;# 允许生成的进程数,默认为 1worker_processes 4;# 每个进程分配一个 CPUworker_cpu_affinity 00000001 00000010 00000100 00001000;# 最大文件描述符数worker_rlimit_nofile 102400;
# 使用 epoll 模型(Linux 2.6+)events { accept_mutex on; multi_accept on; use epoll;} # 最大连接数worker_connections 102400;# 连接超时proxy_connect_timeout 5s;proxy_read_timeout 60s;proxy_send_timeout 5s;
# 启用 Gzip 压缩gzip on;gzip_min_length 1k;gzip_comp_level 9; # 压缩级别(默认 1-9)gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/x-wasm;# 缓冲区大小proxy_buffer_size 16k;proxy_buffers 4 64k;proxy_temp_file_write_size 128k;
# 服务器集群配置upstream mysvr { server 192.168.5.91:7878 max_fails=2 fail_timeout=10s; server 192.168.5.92:7878 max_fails=2 fail_timeout=10s; weight 1 2;} # 监听地址和端口listen 9080;# 服务器名称server_name localhost;# 服务日志access_log logs/access.log main;log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
| 对比项 | Apache | Nginx | Lighttpd |
|---|---|---|---|
| 代理支持 | 好 | 好 | 一般 |
| 重写支持 | 好 | 非常好 | 一般 |
| CGI 支持 | 不好 | 好 | 非常好 |
| 热部署支持 | 不支持 | 支持 | 不支持 |
| 性能压力 | 大 | 小 | 较小 |
| 稳定性 | 好 | 非常好 | 不好 |
| 静态文件处理 | 一般 | 非常好 | 好 |
| 反向代理支持 | 一般 | 非常好 | 一般 |
Nginx 支持第三方模块扩展,用户可以根据需求安装额外模块,例如:
Nginx 提供 Lua 插件支持,用户可以编写 Lua 脚本处理复杂逻辑。例如:
location /lua/set { default_type 'text/plain'; content_by_lua_file conf/lua/setKeyValue.lua;} Nginx 提供 WebSocket 反向代理功能,用户可以配置 WebSocket 端点:
location /ws { proxy_handshake on; proxy_pass http://ws_backend; proxy_set_header Upgrade WebSocket; proxy_set_header Connection Upgrade;} Nginx 凭借其高性能、稳定性和灵活性,成为现代 Web 服务的首选反向代理服务器。无论是小型项目还是大型企业应用,Nginx 都能满足多样化需求。通过合理配置和模块扩展,Nginx 能够在高并发、负载均衡、静态资源服务等场景中表现出色,是每个开发者的理想选择。
转载地址:http://qecfk.baihongyu.com/