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 下载安装 #
- 访问 Nginx官网
- 下载Windows版本(nginx/Windows-x.x.x)
- 解压到指定目录(如
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服务:
- 下载 WinSW
- 创建
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>
- 安装服务:
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
十一、总结 #
本章我们学习了:
- Linux安装:apt/yum包管理器安装和源码编译安装
- macOS安装:使用Homebrew快速安装
- Windows安装:下载安装包和服务注册
- Docker安装:容器化部署
- 验证安装:版本检查、配置测试、访问测试
安装完成后,让我们进入下一章,学习Nginx配置基础!
最后更新:2026-03-27