Nginx 简介
Nginx 是一款高性能的开源 HTTP 和反向代理服务器,以其高并发处理能力和低资源消耗而闻名。它支持多种功能,包括负载均衡、反向代理、静态文件服务等。Nginx 的配置文件基于文本,易于理解和修改,使其成为 Web 开发和运维人员的首选工具之一。
安装准备与编译
在安装 Nginx 之前,确保你的 Linux 系统已经安装了必要的编译工具和库。如果未安装,可以使用以下命令:
yum -y install gcc gcc-c++ autoconf automake make
接下来我们进行源码安装。首先下载并解压源码包:
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
进入解压后的目录后,配置安装路径。这里建议指定到 /usr/local/nginx:
./configure --prefix=/usr/local/nginx
配置完成后,执行编译和安装:
make && make install
安装成功后,可以通过以下命令检查 Nginx 是否启动成功。如果看到 nginx: master process 和 nginx: worker process,则表示服务已正常启动:
ps -ef | grep nginx
手动启动 Nginx 的命令如下:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
为了方便管理,我们可以将 Nginx 添加到系统的启动脚本中实现开机自启。编辑 /etc/rc.d/rc.local 文件,在末尾添加以下内容:
/usr/local/nginx/sbin/nginx
保存并退出即可。
配置文件详解
Nginx 的配置文件位于 /usr/local/nginx/conf/nginx.conf,以下是主要部分的说明。
全局配置
这部分决定了 Nginx 运行的基本行为,比如运行用户和工作进程数。建议将 worker_processes 设置为 CPU 核心数。
user nobody;
worker_processes 1;
events 块
用于定义工作模式及连接上限。每个工作进程的最大连接数由 worker_connections 控制。
events {
worker_connections 1024;
}
http 块
这是最核心的部分,包含 MIME 类型定义、默认文件类型、长连接超时以及具体的 server 配置。
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
以上是一个基础配置示例,实际项目中可能需要根据业务需求调整。
常用命令
掌握几个关键命令能极大提升运维效率。
检查配置文件语法:在修改配置后务必先执行此命令,避免重启失败。
/usr/local/nginx/sbin/nginx -t
平滑重启 Nginx:无需中断当前连接即可应用新配置。
/usr/local/nginx/sbin/nginx -s reload
停止 Nginx:优雅关闭服务。
/usr/local/nginx/sbin/nginx -s stop
启动 Nginx:直接启动服务。
/usr/local/nginx/sbin/nginx
维护与优化
日志管理
Nginx 的日志默认存储在 /usr/local/nginx/logs 目录下。可以通过配置文件中的 access_log 和 error_log 指令指定位置。例如:
access_log /usr/local/nginx/logs/access.log main;
error_log /usr/local/nginx/logs/error.log warn;
性能优化
- 调整工作进程数:将
worker_processes设置为 CPU 核心数。 - 优化连接数:增大
worker_connections的值以支持更多并发连接。 - 启用 Gzip 压缩:在
http块中添加以下配置,减少传输体积。
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_types text/plain application/javascript application/json;
安全配置
隐藏版本信息:防止泄露 Nginx 版本细节。
server_tokens off;
限制访问:使用 allow 和 deny 指令限制对特定资源的访问。
location /admin {
allow 192.168.1.0/24;
deny all;
}
高级应用
反向代理
Nginx 可以作为反向代理服务器,将请求转发到后端服务器。注意设置 Host 和 X-Real-IP 头信息,以便后端获取真实客户端 IP。
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;
}
}
负载均衡
Nginx 可以实现简单的负载均衡功能,通过 upstream 定义后端服务器组。
upstream backend {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
常见问题及解决方案
-
502 Bad Gateway 错误
- 原因:后端服务未启动或 Nginx 无法连接到后端服务。
- 解决方法:检查后端服务是否正常运行,并确保 Nginx 的
proxy_pass配置正确。
-
403 Forbidden 错误
- 原因:文件权限不足或
root指令配置错误。 - 解决方法:检查文件权限,并确保
root指令指向正确的目录。
- 原因:文件权限不足或
-
Nginx 无法启动
- 原因:配置文件语法错误。
- 解决方法:使用
/usr/local/nginx/sbin/nginx -t检查配置文件语法。


