切换主题
在 lidong 安装与配置 Nginx
1. Nginx 简介
Nginx (发音为 "engine-x") 是一个高性能的开源 Web 服务器和反向代理服务器。它因其高效、稳定、低内存消耗和高并发连接处理能力而闻名。
主要用途:
- Web 服务器:提供静态内容,如 HTML、CSS、JavaScript 等
- 反向代理:将客户端请求转发到后端服务器
- 负载均衡器:在多个后端服务器之间分配流量
- 缓存服务器:缓存静态内容,减轻后端压力
- API 网关:管理 API 请求和响应
2. 安装准备
2.1 系统要求
Nginx 可以在多种操作系统上运行,包括: Linux (各种发行版)、FreeBSD、macOS、Windows。
2.2 安装前的准备工作
在安装 Nginx 前,请确保系统已更新并安装必要的依赖包:
bash
# Debian/Ubuntu 系统
sudo apt update
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
# CentOS/RHEL 系统
sudo yum update
sudo yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel下文以 Debian 12 为主要示例。
3. 安装方法
3.1 使用包管理器安装(推荐)
Debian/Ubuntu
bash
sudo apt update
sudo apt install -y nginxCentOS/RHEL
bash
sudo yum install epel-release
sudo yum install nginx安装完记的去设置开机启动,参见Nginx 管理。
3.2 源代码编译安装
源码安装可精确选择模块,并针对特定硬件或运行环境进行优化,但维护成本更高。若没有明确的定制需求,建议优先使用发行版包管理器;以下内容作为进阶参考。
步骤 1:下载源码包
bash
# 创建下载目录
mkdir -p ~/nginx-build && cd ~/nginx-build
# 下载最新稳定版
wget http://nginx.org/download/nginx-1.24.0.tar.gz步骤 2: 解压源码包
bash
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0步骤 3:配置编译选项
bash
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module步骤 4: 编译和安装
bash
# 编译
make
# 安装
sudo make install3.3 验证安装
bash
# 检查 Nginx 版本
/usr/local/nginx/sbin/nginx -v
# 检查配置文件语法
/usr/local/nginx/sbin/nginx -t
4.配置 Nginx
4.1 目录结构
安装完成后, Nginx 的主要目录结构如下:
| 目录/文件 | 描述 |
|---|---|
| /etc/nginx/ 或 /usr/local/nginx/conf/ | 配置文件目录 |
| /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf | 主配置文件 |
| /etc/nginx/sites-available/ | 可用站点配置 |
| /etc/nginx/sites-enabled/ | 已启用站点配置 |
| /var/log/nginx/ 或 /usr/local/nginx/logs/ | 日志文件目录 |
| /usr/share/nginx/html/ 或 /usr/local/nginx/html/ | 默认网站文件目录 |
4.2 常见配置场景
静态网站配置
bash
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}反向代理配置
bash
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://localhost: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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}负载均衡配置
bash
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}5. Nginx 管理
5.1 服务控制
系统服务方式 (systemd)
bash
# 启动 Nginx
sudo systemctl start nginx
# 停止 Nginx
sudo systemctl stop nginx
# 重启 Nginx
sudo systemctl restart nginx
# 重新加载配置
sudo systemctl reload nginx
# 查看状态
sudo systemctl status nginx
# 设置开机启动 (建议开启)
sudo systemctl enable nginx手动控制
bash
# 启动 Nginx
sudo nginx
# 停止 Nginx
sudo nginx -s stop
# 优雅停止(等待请求处理完毕)
sudo nginx -s quit
# 重新加载配置
sudo nginx -s reload
# 检查配置文件语法
sudo nginx -t6. 进阶方向
生产环境还应根据业务规模完善日志轮转、性能调优、安全响应头、访问控制与监控告警。