Nginx安装 #

一、安装前的准备 #

在安装Nginx之前,我们需要了解几种安装方式:

安装方式 优点 缺点 适用场景
包管理器 简单快捷 版本可能较旧 快速部署
源码编译 版本可选、可定制 复杂耗时 生产环境
Docker 环境隔离 需要Docker 容器化部署

二、Linux安装 #

2.1 Ubuntu/Debian #

使用apt安装:

bash
sudo apt update
sudo apt install nginx

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

安装最新版本:

bash
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
    http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

sudo apt update
sudo apt install nginx

2.2 CentOS/RHEL #

使用yum安装:

bash
sudo yum install epel-release
sudo yum install nginx

sudo systemctl start nginx
sudo systemctl enable nginx

安装最新版本:

bash
sudo yum install yum-utils

cat <<EOF | sudo tee /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

sudo yum install nginx

2.3 源码编译安装 #

源码编译可以自定义模块和功能:

1. 安装编译依赖:

bash
sudo apt update
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev wget

2. 下载源码:

bash
cd /usr/local/src
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

3. 配置编译选项:

bash
./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-http_ssl_module \
    --with-http_v2_module \
    --with-http_realip_module \
    --with-http_gzip_static_module \
    --with-http_stub_status_module \
    --with-pcre

常用编译选项说明:

选项 说明
–prefix 安装目录
–user/–group 运行用户/组
–with-http_ssl_module SSL模块
–with-http_v2_module HTTP/2模块
–with-http_gzip_static_module Gzip静态压缩
–with-http_stub_status_module 状态监控

4. 编译安装:

bash
make
sudo make install

5. 创建nginx用户:

bash
sudo useradd -r -s /sbin/nologin nginx

6. 创建systemd服务:

bash
sudo tee /etc/systemd/system/nginx.service <<EOF
[Unit]
Description=nginx - high performance web server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT \$MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl enable nginx

三、macOS安装 #

3.1 使用Homebrew #

bash
brew install nginx

启动Nginx:

bash
brew services start nginx

配置文件位置:

text
/usr/local/etc/nginx/nginx.conf

默认根目录:

text
/usr/local/var/www

3.2 验证安装 #

bash
nginx -v

curl http://localhost:8080

四、Windows安装 #

4.1 下载安装 #

  1. 访问 Nginx官网
  2. 下载Windows版本(nginx/Windows-x.x.x)
  3. 解压到指定目录(如 C:\nginx

4.2 命令行操作 #

cmd
cd C:\nginx

start nginx

nginx -s stop

nginx -s quit

nginx -s reload

nginx -s reopen

4.3 Windows服务注册 #

使用WinSW将Nginx注册为Windows服务:

  1. 下载 WinSW
  2. 创建 nginx-service.xml
xml
<service>
  <id>nginx</id>
  <name>Nginx</name>
  <description>Nginx Web Server</description>
  <executable>C:\nginx\nginx.exe</executable>
  <logpath>C:\nginx\logs</logpath>
  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold>
    <keepFiles>8</keepFiles>
  </log>
  <stopexecutable>C:\nginx\nginx.exe</stopexecutable>
  <stoparguments>-s stop</stoparguments>
</service>
  1. 安装服务:
cmd
nginx-service.exe install
nginx-service.exe start

五、Docker安装 #

5.1 基本运行 #

bash
docker run --name my-nginx -p 80:80 -d nginx

5.2 挂载配置和静态文件 #

bash
docker run --name my-nginx \
    -p 80:80 \
    -v /path/to/nginx.conf:/etc/nginx/nginx.conf:ro \
    -v /path/to/html:/usr/share/nginx/html:ro \
    -d nginx

5.3 Docker Compose #

yaml
version: '3.8'
services:
  nginx:
    image: nginx:latest
    container_name: my-nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./html:/usr/share/nginx/html:ro
      - ./ssl:/etc/nginx/ssl:ro
      - ./logs:/var/log/nginx
    restart: always
bash
docker-compose up -d

六、验证安装 #

6.1 检查版本 #

bash
nginx -v

nginx -V

6.2 测试配置 #

bash
nginx -t

6.3 访问测试 #

bash
curl http://localhost

浏览器访问 http://服务器IP,看到Nginx欢迎页面表示安装成功。

6.4 检查进程 #

bash
ps aux | grep nginx

预期输出:

text
root      1234  0.0  0.1  nginx: master process
nginx     1235  0.0  0.2  nginx: worker process

七、目录结构 #

安装完成后,了解Nginx的目录结构:

text
/usr/local/nginx/          # 编译安装目录
├── conf/                  # 配置文件目录
│   ├── nginx.conf         # 主配置文件
│   ├── mime.types         # MIME类型定义
│   └── fastcgi.conf       # FastCGI配置
├── html/                  # 默认网站根目录
│   └── index.html         # 默认首页
├── logs/                  # 日志目录
│   ├── access.log         # 访问日志
│   └── error.log          # 错误日志
└── sbin/                  # 可执行文件目录
    └── nginx              # Nginx主程序

八、防火墙配置 #

8.1 Ubuntu/Debian (ufw) #

bash
sudo ufw allow 'Nginx Full'
sudo ufw status

8.2 CentOS/RHEL (firewalld) #

bash
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

8.3 iptables #

bash
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo service iptables save

九、SELinux配置(CentOS) #

如果启用了SELinux,需要配置策略:

bash
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_read_user_content 1
setsebool -P httpd_enable_homedirs 1

十、常见问题 #

10.1 端口被占用 #

问题:启动失败,提示端口被占用

解决

bash
netstat -tlnp | grep :80
kill -9 <PID>

10.2 权限问题 #

问题:Permission denied

解决

bash
chown -R nginx:nginx /var/log/nginx
chmod -R 755 /var/log/nginx

10.3 配置文件错误 #

问题:配置语法错误

解决

bash
nginx -t

10.4 SELinux阻止 #

问题:SELinux阻止Nginx访问

解决

bash
ausearch -c nginx --raw | audit2allow -M my-nginx
semodule -i my-nginx.pp

十一、总结 #

本章我们学习了:

  1. Linux安装:apt/yum包管理器安装和源码编译安装
  2. macOS安装:使用Homebrew快速安装
  3. Windows安装:下载安装包和服务注册
  4. Docker安装:容器化部署
  5. 验证安装:版本检查、配置测试、访问测试

安装完成后,让我们进入下一章,学习Nginx配置基础!

最后更新:2026-03-27