跳到主要内容

Nginx 配置案例

介绍

Nginx 是一个高性能的 HTTP 和反向代理服务器,广泛用于负载均衡、静态资源服务和反向代理等场景。理解 Nginx 的配置是掌握其使用的关键。本文将结合实际案例,逐步讲解 Nginx 的核心配置,帮助初学者快速上手。

基本配置结构

Nginx 的配置文件通常位于 /etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf。配置文件由多个指令块组成,每个指令块包含一组指令。以下是一个简单的 Nginx 配置示例:

nginx
# 全局配置
user nginx;
worker_processes auto;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

server {
listen 80;
server_name example.com;

location / {
root /usr/share/nginx/html;
index index.html;
}
}
}

解释

  • user nginx;:指定 Nginx 运行的用户。
  • worker_processes auto;:设置工作进程的数量,auto 表示根据 CPU 核心数自动调整。
  • events { ... }:配置事件处理模型。
  • http { ... }:包含 HTTP 相关的配置。
  • server { ... }:定义一个虚拟主机。
  • location / { ... }:定义 URL 路径的匹配规则。

实际案例

案例 1:静态文件服务

假设你有一个静态网站,文件存放在 /var/www/html 目录下。你需要配置 Nginx 来提供这些文件。

nginx
server {
listen 80;
server_name static.example.com;

location / {
root /var/www/html;
index index.html;
}
}

解释

  • listen 80;:监听 80 端口。
  • server_name static.example.com;:指定服务器名。
  • root /var/www/html;:设置根目录。
  • index index.html;:指定默认首页文件。

案例 2:反向代理

假设你有一个后端服务运行在 localhost:8080,你需要配置 Nginx 作为反向代理,将请求转发到后端服务。

nginx
server {
listen 80;
server_name api.example.com;

location / {
proxy_pass http://localhost: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;
}
}

解释

  • proxy_pass http://localhost:8080;:将请求转发到后端服务。
  • proxy_set_header Host $host;:设置请求头中的 Host 字段。
  • proxy_set_header X-Real-IP $remote_addr;:设置请求头中的 X-Real-IP 字段。
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:设置请求头中的 X-Forwarded-For 字段。

案例 3:负载均衡

假设你有多个后端服务运行在不同的端口上,你需要配置 Nginx 作为负载均衡器,将请求分发到这些服务。

nginx
upstream backend {
server localhost:8080;
server localhost:8081;
server localhost:8082;
}

server {
listen 80;
server_name loadbalancer.example.com;

location / {
proxy_pass http://backend;
}
}

解释

  • upstream backend { ... }:定义一组后端服务器。
  • proxy_pass http://backend;:将请求转发到 backend 组中的服务器。

总结

通过以上案例,我们学习了如何配置 Nginx 来提供静态文件服务、反向代理和负载均衡。Nginx 的配置非常灵活,可以根据实际需求进行调整。希望这些案例能帮助你更好地理解 Nginx 的配置方法。

附加资源

练习

  1. 配置 Nginx 来提供你本地的静态网站。
  2. 配置 Nginx 作为反向代理,将请求转发到你本地的开发服务器。
  3. 配置 Nginx 作为负载均衡器,将请求分发到多个后端服务。

通过完成这些练习,你将更加熟悉 Nginx 的配置方法。