Nginx 入门教程

150 阅读3分钟

什么是 Nginx?

Nginx(发音为“engine-x”)是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3 代理服务器。它最初是为了提高高并发下的性能而开发的,具有高效的处理并发连接的能力,因此被广泛应用于 Web 服务器、反向代理服务器、负载均衡器等场景。

Nginx 支持多种功能,最常见的用法包括:

  • 静态文件服务器:处理 HTML、CSS、JavaScript、图片等静态内容。
  • 反向代理:将客户端的请求转发到后台的应用服务器上,提供负载均衡等服务。
  • 负载均衡:将请求均匀地分配给多台后端服务器。
  • SSL/TLS 加密:支持 HTTPS 协议。
  • WebSocket 支持:支持 WebSocket 协议的代理和负载均衡。

Nginx 安装

在 Ubuntu/Debian 上安装 Nginx

  1. 更新系统包:
sudo apt update
  1. 安装 Nginx:
sudo apt install nginx
  1. 启动 Nginx 服务:
sudo systemctl start nginx
  1. 设置 Nginx 在系统启动时自动启动:
sudo systemctl enable nginx
  1. 检查 Nginx 是否安装成功,可以通过访问服务器的 IP 地址来查看默认的欢迎页面。你可以使用浏览器访问 http://<服务器IP>

在 CentOS/RHEL 上安装 Nginx

  1. 安装 EPEL 仓库:
sudo yum install epel-release
  1. 安装 Nginx:
sudo yum install nginx
  1. 启动 Nginx 服务:
sudo systemctl start nginx
  1. 设置 Nginx 在系统启动时自动启动:
sudo systemctl enable nginx
  1. 同样,可以通过浏览器访问服务器的 IP 地址检查是否成功。

Nginx 配置文件结构

Nginx 的配置文件一般位于 /etc/nginx/nginx.conf,这个文件包括了全局配置、HTTP 服务器配置、虚拟主机配置等。常见的配置项包括:

  • worker_processes:定义 Nginx 使用的工作进程数。
  • server:每个 server 块代表一个虚拟主机。
  • location:用于定义 URL 路径和后端服务的匹配规则。
# Nginx 主配置文件
worker_processes 1;  # 工作进程数

events {
    worker_connections 1024;  # 每个进程允许的最大连接数
}

http {
    include       mime.types;  # 包含 MIME 类型配置
    default_type  application/octet-stream;

    # 访问日志和错误日志
    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;

    # 定义虚拟主机
    server {
        listen       80;  # 监听端口
        server_name  localhost;  # 主机名

        # 根目录和默认文件
        root   /usr/share/nginx/html;
        index  index.html index.htm;

        # 访问配置
        location / {
            try_files $uri $uri/ =404;
        }
    }
}

配置 Nginx 作为反向代理

假设你有一个运行在端口 3000 上的后端应用,想通过 Nginx 来转发客户端请求:

  1. 打开 Nginx 配置文件 /etc/nginx/nginx.conf 或者某个站点的配置文件(通常位于 /etc/nginx/sites-available/)。

  2. 添加一个 server 块:

server {
    listen 80;  # 监听 HTTP 请求
    server_name example.com;  # 虚拟主机名

    location / {
        proxy_pass http://127.0.0.1:3000;  # 反向代理到本地的 3000 端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  1. 保存文件并重新加载 Nginx 配置:
sudo systemctl reload nginx

此时,所有访问 example.com 的请求都会被转发到运行在本地 3000 端口的应用。

配置 HTTPS(SSL/TLS)

为了加密 Web 流量,通常会为网站配置 SSL/TLS(HTTPS)。你可以通过以下步骤启用 HTTPS:

获取 SSL 证书

你可以使用免费证书提供商 Let's Encrypt 获取 SSL 证书,或者购买商业证书。以 Let's Encrypt 为例,可以使用 certbot 工具:

sudo apt install certbot python3-certbot-nginx

然后运行以下命令自动配置 SSL:

sudo certbot --nginx -d example.com

Certbot 会自动获取 SSL 证书并修改 Nginx 配置以启用 HTTPS。

手动配置 SSL

如果你有自己的 SSL 证书文件,可以手动配置 Nginx 使用 SSL:

  1. 编辑你的 Nginx 配置文件,添加以下配置:
server {
    listen 80;
    server_name example.com;

    # 强制重定向 HTTP 到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}
  1. 保存并重新加载 Nginx:
sudo systemctl reload nginx

查看 Nginx 状态与日志

  • 查看 Nginx 服务状态:
sudo systemctl status nginx
  • 查看 Nginx 错误日志:
tail -f /var/log/nginx/error.log
  • 查看 Nginx 访问日志:
tail -f /var/log/nginx/access.log

总结

Nginx 是一个非常强大的 Web 服务器和反向代理服务器,适用于高并发的 Web 应用。它不仅提供了基本的静态文件服务,还支持负载均衡、SSL 加密和反向代理等多种功能。通过本教程的学习,你可以成功安装和配置 Nginx,并将其用于常见的 Web 应用场景中。

如果你需要更深入的了解,可以查阅 Nginx 官方文档