2025-11-20 00:11:38

Nginx完全指南:从入门到精通(基于Ubuntu系统)

一、Nginx 简介什么是 Nginx?

Nginx(读作 “engine x”)是一个高性能的 HTTP 和反向代理服务器,同时也支持 IMAP/POP3/SMTP 代理功能。特点:内存占用少、并发处理能力强、配置灵活、高可扩展性。广泛用于 Web 服务器、反向代理、负载均衡、API 网关等场景。Nginx 的常见应用场景

HTTP 服务器:处理静态文件或作为 Web 应用的前端服务器。反向代理:为后端服务器提供负载均衡、缓存等功能。负载均衡:通过算法将请求分发到多个后端服务器,提升服务能力。缓存:利用代理缓存加速访问。HTTPS / SSL 终止:在 Nginx 端卸载 SSL,后端使用 HTTP 提高效率。二、在 Ubuntu 中安装 Nginx系统要求:建议使用 Ubuntu 20.04 LTS 或 22.04 LTS(当前支持的长期支持版本)。

更新软件源

sudo apt update

安装 Nginx

sudo apt install nginx

验证安装是否成功

查看版本:

nginx -v

启动服务:

sudo systemctl start nginx

检查状态:

sudo systemctl status nginx

在浏览器访问 http://localhost 或 http://服务器IP/,确认是否显示默认的 Nginx 欢迎页面。三、Nginx 服务管理常用命令(Ubuntu)以下是在 Ubuntu 系统下管理 Nginx 的常用命令:

# 启动 Nginx

sudo systemctl start nginx

# 停止 Nginx

sudo systemctl stop nginx

# 重启 Nginx

sudo systemctl restart nginx

# 重新加载配置(不中断服务)

sudo systemctl reload nginx

# 查看 Nginx 运行状态

sudo systemctl status nginx

# 设置开机自启动

sudo systemctl enable nginx

# 取消开机自启动

sudo systemctl disable nginx

四、Nginx 文件结构与主要配置Ubuntu 默认安装的 Nginx 配置文件目录结构如下:

/etc/nginx/

├── nginx.conf # 主配置文件(全局入口)

├── sites-available/ # 可用的站点配置文件存放目录

├── sites-enabled/ # 已启用的站点配置文件(通常为软链接)

├── conf.d/ # 额外的配置文件目录

├── modules-available/

├── modules-enabled/

└── ...

1. nginx.conf 主配置文件http 块:配置 HTTP 协议相关参数,如日志格式、默认 MIME 类型等。events 块:设置网络连接处理参数,如 worker_connections(工作连接数)。worker_processes:定义工作进程数量,通常根据 CPU 核心数设置。站点配置通常放在 sites-available 中,并通过软链接到 sites-enabled 被主配置文件引用。2. sites-available 与 sites-enabledsites-available:存储所有可用的站点配置文件。sites-enabled:存储实际启用的站点配置文件,通常从 sites-available 创建软链接。主配置文件 nginx.conf 的 http 块中通常包含:

include /etc/nginx/sites-enabled/*;

以加载所有启用站点的配置。3. 基本站点配置示例以下是一个简单的静态网站配置示例(文件路径:/etc/nginx/sites-available/my_site.conf):

server {

listen 80;

server_name example.com www.example.com; # 替换为你的域名或 IP

root /var/www/my_site; # 网站根目录

index index.html index.htm;

# 日志路径可自定义

access_log /var/log/nginx/my_site_access.log;

error_log /var/log/nginx/my_site_error.log;

location / {

try_files $uri $uri/ =404;

}

}

配置生效步骤:

# 创建并编辑配置文件

sudo nano /etc/nginx/sites-available/my_site.conf

# 测试配置文件语法

sudo nginx -t

# 创建软链接到 sites-enabled

sudo ln -s /etc/nginx/sites-available/my_site.conf /etc/nginx/sites-enabled/

# 重新加载 Nginx

sudo systemctl reload nginx

五、常见功能与配置1. 反向代理与负载均衡(1)反向代理示例将请求转发到后端应用(如运行在 localhost:8080 的服务):

server {

listen 80;

server_name example.com;

location / {

proxy_pass http://127.0.0.1:8080; # 后端服务地址

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

(2)负载均衡示例使用 upstream 定义后端服务器池:

upstream backend_servers {

server 127.0.0.1:8080;

server 127.0.0.1:8081;

# 可选负载均衡策略:least_conn; 或 ip_hash; # 默认轮询(round-robin)

}

server {

listen 80;

server_name example.com;

location / {

proxy_pass http://backend_servers;

}

}

2. HTTPS/SSL 配置假设已获取证书文件 server.crt 和私钥 server.key(可通过 Let’s Encrypt 获取),存放于 /etc/nginx/ssl/:

server {

listen 443 ssl http2;

server_name example.com;

ssl_certificate /etc/nginx/ssl/server.crt;

ssl_certificate_key /etc/nginx/ssl/server.key;

# 安全配置建议

ssl_session_timeout 5m;

ssl_protocols TLSv1.2 TLSv1.3; # 使用现代 TLS 版本

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;

ssl_prefer_server_ciphers on;

root /var/www/my_site;

index index.html index.htm;

}

HTTP 自动跳转到 HTTPS:

server {

listen 80;

server_name example.com;

return 301 https://$host$request_uri;

3. 日志与调试访问日志:默认路径 /var/log/nginx/access.log。错误日志:默认路径 /var/log/nginx/error.log。自定义日志示例:

access_log /var/log/nginx/my_site_access.log main;

error_log /var/log/nginx/my_site_error.log warn;

4. 缓存与静态文件处理为静态文件设置缓存策略,减少服务器压力:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {

expires 7d; # 缓存 7 天

access_log off;

}

5. 防盗链与访问限制防止图片被其他网站盗用:

location ~* \.(png|jpg|gif)$ {

valid_referers none blocked server_names *.yourdomain.com;

if ($invalid_referer) {

return 403;

}

}

六、Nginx 配置测试与排错测试配置文件

sudo nginx -t

成功输出示例:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

查看错误日志

tail -f /var/log/nginx/error.log

重载配置

sudo systemctl reload nginx

常见问题解决

80 端口占用:

sudo lsof -i :80

权限问题:检查文件和目录权限(如 ls -l /var/www/)。防火墙:确保允许 80/443 端口:

sudo ufw allow 'Nginx HTTP'

sudo ufw allow 'Nginx HTTPS'

七、进阶与优化方向性能优化

设置 worker_processes auto; 自动匹配 CPU 核心数。调整 worker_connections 和 keepalive_timeout。启用 HTTP/2:listen 443 ssl http2;。安全优化

强制 HTTPS,禁用弱加密协议。添加安全 HTTP 头:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

add_header X-Frame-Options DENY;

add_header X-Content-Type-Options nosniff;

模块与插件

使用 Nginx 自带模块(如 Gzip、Rewrite)或第三方模块(如 Lua)。监控与日志分析

使用 Prometheus + Grafana 监控 Nginx 性能。将日志接入 Elastic Stack 或 Splunk 进行分析。八、总结Nginx 是 Web 服务领域的核心工具,掌握其基本功能(如 HTTP 服务器、反向代理、负载均衡、HTTPS)至关重要。通过学习安装、配置、调试,可根据业务需求灵活应用。建议参考 Nginx 官方文档 并结合实践加深理解。在生产环境中,注重安全和高可用性,并进行充分测试和监控。推荐学习步骤熟悉基础命令:安装、启动、停止、重启,测试配置文件。理解配置结构:掌握 nginx.conf 和 sites-* 目录的作用。实现基本站点:搭建静态网站,配置日志和静态文件处理。进阶功能:配置反向代理、负载均衡、HTTPS、防盗链等。优化与监控:提升性能、增强安全、实现日志分析。