跳到主要内容

环境配置

本章将介绍如何在不同操作系统上安装和配置 Nginx 开发环境。

安装方式

Ubuntu/Debian

使用 apt 包管理器安装:

# 更新软件源
sudo apt update

# 安装 Nginx
sudo apt install nginx -y

# 检查安装版本
nginx -v

# 启动 Nginx
sudo systemctl start nginx

# 设置开机自启
sudo systemctl enable nginx

# 检查状态
sudo systemctl status nginx

解释

  • apt update 更新软件包索引,确保安装最新版本
  • systemctl 是 systemd 的服务管理工具,用于管理后台服务
  • enable 命令确保系统启动时自动运行 Nginx

CentOS/RHEL

使用 yum 或 dnf 安装:

# CentOS 7 / RHEL 7
sudo yum install epel-release -y
sudo yum install nginx -y

# CentOS 8+ / RHEL 8+
sudo dnf install nginx -y

# 启动服务
sudo systemctl start nginx
sudo systemctl enable nginx

# 检查状态
sudo systemctl status nginx

解释:CentOS 默认源不包含 Nginx,需要先安装 EPEL 仓库(Extra Packages for Enterprise Linux)。

macOS

使用 Homebrew 安装:

# 安装 Homebrew(如果没有)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装 Nginx
brew install nginx

# 启动 Nginx
brew services start nginx

# 或者前台运行(用于调试)
nginx

macOS 安装后的默认路径:

  • 配置文件:/opt/homebrew/etc/nginx/nginx.conf
  • 默认站点:/opt/homebrew/var/www
  • 日志目录:/opt/homebrew/var/log/nginx

Windows

  1. 访问 Nginx 下载页面 下载稳定版
  2. 解压到目录(如 C:\nginx
  3. 运行命令:
# 启动 Nginx
cd C:\nginx
start nginx

# 停止 Nginx
nginx -s stop

# 重新加载配置
nginx -s reload

# 检查版本
nginx -v

使用 Docker 安装(推荐)

Docker 方式安装简单,环境隔离,适合开发和生产:

# 拉取官方镜像
docker pull nginx:latest

# 运行 Nginx 容器
docker run -d \
--name nginx \
-p 80:80 \
-p 443:443 \
-v /path/to/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /path/to/html:/usr/share/nginx/html:ro \
nginx:latest

# 查看运行状态
docker ps

# 进入容器
docker exec -it nginx bash

解释

  • -d 后台运行容器
  • -p 80:80 映射端口
  • -v 挂载配置文件和网站目录
  • :ro 表示只读挂载

Docker Compose 配置

更推荐使用 Docker Compose 管理:

# docker-compose.yml
version: '3.8'

services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./html:/usr/share/nginx/html:ro
- ./logs:/var/log/nginx
restart: always
networks:
- web-network

networks:
web-network:
driver: bridge

启动:

docker-compose up -d

源码编译安装

如需自定义模块或特定版本,可从源码编译:

# 安装依赖
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y

# 下载源码
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

# 配置编译选项
./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_gzip_static_module

# 编译和安装
make
sudo make install

解释

  • --prefix 指定安装目录
  • --with-http_ssl_module 启用 SSL 支持
  • --with-http_v2_module 启用 HTTP/2 支持
  • --with-http_gzip_static_module 启用 gzip 压缩

基本操作命令

服务管理命令

# 启动 Nginx
sudo systemctl start nginx # systemd 方式
sudo service nginx start # init.d 方式
nginx # 直接启动

# 停止 Nginx
sudo systemctl stop nginx
sudo service nginx stop
nginx -s stop # 快速停止
nginx -s quit # 优雅停止(等待请求处理完成)

# 重启 Nginx
sudo systemctl restart nginx
sudo service nginx restart

# 重新加载配置(不中断服务)
sudo systemctl reload nginx
nginx -s reload

# 查看状态
sudo systemctl status nginx

配置验证命令

# 检查配置文件语法
nginx -t

# 检查指定配置文件
nginx -t -c /path/to/nginx.conf

# 查看编译参数
nginx -V

# 查看版本
nginx -v

解释:修改配置文件后,先使用 nginx -t 验证语法,然后再重新加载,避免配置错误导致服务中断。

目录结构

安装后的主要目录

/etc/nginx/              # 配置文件目录(主要)
├── nginx.conf # 主配置文件
├── conf.d/ # 附加配置文件目录
├── sites-available/ # 可用站点配置
├── sites-enabled/ # 启用的站点配置(符号链接)
├── modules/ # 模块目录
└── ssl/ # SSL 证书目录

/var/log/nginx/ # 日志目录
├── access.log # 访问日志
└── error.log # 错误日志

/usr/share/nginx/ # 默认网站目录
├── html/ # 默认网页
└── ...

/var/run/nginx.pid # PID 文件

重要配置文件说明

文件说明
/etc/nginx/nginx.conf主配置文件,包含全局设置
/etc/nginx/conf.d/*.conf自定义配置文件,通常放置站点配置
/etc/nginx/sites-available/*站点配置文件(可用)
/etc/nginx/sites-enabled/*启用的站点配置(链接)

验证安装

浏览器访问

安装完成后,打开浏览器访问 http://localhost 或服务器 IP 地址,应该看到 Nginx 默认欢迎页面。

命令行测试

# 使用 curl 测试
curl -I http://localhost

# 预期输出
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Mon, 01 Jan 2024 00:00:00 GMT
Content-Type: text/html
Content-Length: 612
Connection: keep-alive

查看进程

# 查看 Nginx 进程
ps aux | grep nginx

# 预期输出
root 1234 0.0 0.1 12345 6789 ? Ss 10:00 0:00 nginx: master process
www-data 1235 0.0 0.1 12345 6789 ? S 10:00 0:00 nginx: worker process

开发环境推荐

VS Code 配置

安装 Nginx 配置语法高亮插件:

  • nginx.conf - Nginx 语法高亮

本地开发环境

推荐使用 Docker 搭建本地开发环境,隔离且可重复:

# 创建项目目录
mkdir my-nginx-project
cd my-nginx-project

# 创建目录结构
mkdir -p conf.d html logs ssl

# 创建基本配置
cat > nginx.conf << 'EOF'
worker_processes auto;

events {
worker_connections 1024;
}

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

sendfile on;
keepalive_timeout 65;

include /etc/nginx/conf.d/*.conf;
}
EOF

# 创建站点配置
cat > conf.d/default.conf << 'EOF'
server {
listen 80;
server_name localhost;

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

# 创建测试页面
cat > html/index.html << 'EOF'
<!DOCTYPE html>
<html>
<head><title>Nginx 测试</title></head>
<body><h1>Nginx 安装成功!</h1></body>
</html>
EOF

# 启动
docker-compose up -d

常见问题

1. 端口被占用

# 查看端口占用
sudo lsof -i :80
# 或
sudo netstat -tlnp | grep 80

# 杀掉占用进程
sudo kill -9 <PID>

2. 权限问题

# 确保 Nginx 用户有权限访问网站目录
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

3. 防火墙设置

# Ubuntu/Debian - ufw
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

# CentOS/RHEL - firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

小结

本章我们学习了:

  1. 在不同操作系统上安装 Nginx
  2. 使用 Docker 安装 Nginx
  3. Nginx 的基本操作命令
  4. 配置文件的目录结构
  5. 验证安装的方法
  6. 常见问题的解决方法

练习

  1. 在你的系统上安装 Nginx
  2. 使用 nginx -t 检查默认配置
  3. 访问 http://localhost 确认安装成功
  4. 使用 Docker 搭建一个 Nginx 开发环境

准备好继续学习了吗?下一章将介绍 Nginx 的基础配置。