Nginx 的安装与卸载
Nginx 安装
以下是在 CentOS 7.9 上通过源码编译安装 Nginx ,并配置 Brotli 、Gzip 压缩及 HTTP 、HTTPS 的完整步骤。
1. 安装编译器和工具
bash
sudo yum install -y epel-release
sudo yum install -y wget git make gcc-c++ pcre-devel zlib-devel openssl-devel brotli-devel
2. 下载 Nginx 及 Brotli 模块
bash
# 进入下载目录
cd /usr/local/softpackage
# 下载 ngx_brotli 模块
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
# 修改子模块 URL 为国内镜像
git config submodule.deps/brotli.url https://gitee.com/mirrors/brotli.git
# 然后执行子模块更新(速度会快很多)
git submodule update --init
# 返回到下载目录
cd ..
# 下载nginx
wget -P /usr/local/softpackage http://nginx.org/download/nginx-1.25.3.tar.gz
# 解压
tar -zxvf /usr/local/softpackage/nginx-1.25.3.tar.gz
# 进入源码文件夹
cd nginx-1.25.3
3. 配置编译选项(启用 SSL 支持)
bash
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-file-aio \
--with-threads \
--add-module=../ngx_brotli
Nginx 编译参数介绍
基础路径和文件位置相关参数
--prefix=/usr/local/nginx
- 说明:指定 Nginx 的安装目录。
- 默认值 :
/usr/local/nginx
- 作用:所有相关的文件(如配置文件、日志文件等)都会在这个目录下创建。
--sbin-path=/usr/sbin/nginx
- 说明 :指定 Nginx 可执行文件(
nginx
)的安装路径。 - 默认值 :
--prefix/sbin/nginx
- 作用 :此参数将其安装到
/usr/sbin/nginx
。
- 说明 :指定 Nginx 可执行文件(
--conf-path=/etc/nginx/nginx.conf
- 说明:指定 Nginx 配置文件的路径。
- 默认值 :
--prefix/conf/nginx.conf
- 作用 :此参数将其设置为
/etc/nginx/nginx.conf
。
--pid-path=/var/run/nginx.pid
- 说明:指定 Nginx 进程 ID 文件的路径。
- 默认值 :
--prefix/logs/nginx.pid
- 作用 :此参数将其设置为
/var/run/nginx.pid
。
--lock-path=/var/run/nginx.lock
- 说明:指定 Nginx 的锁文件路径,用于防止多个 Nginx 实例同时运行。
- 默认值 :
--prefix/logs/nginx.lock
- 作用 :此参数将其设置为
/var/run/nginx.lock
。
--error-log-path=/var/log/nginx/error.log
- 说明:指定 Nginx 的错误日志文件路径。
- 默认值 :
--prefix/logs/error.log
- 作用 :此参数将其设置为
/var/log/nginx/error.log
。
--http-log-path=/var/log/nginx/access.log
- 说明:指定 Nginx 的访问日志文件路径。
- 默认值 :
--prefix/logs/access.log
- 作用 :此参数将其设置为
/var/log/nginx/access.log
。
功能模块相关参数
--with-http_ssl_module
- 说明:启用 SSL/TLS 支持,允许 Nginx 使用 HTTPS 协议。
- 作用:这是运行 HTTPS 网站所必需的模块。
--with-http_v2_module
- 说明:启用 HTTP/2 支持,允许 Nginx 使用 HTTP/2 协议。
- 作用:HTTP/2 是 HTTP 协议的升级版本,可以提高网页加载速度。
--with-http_realip_module
- 说明 :启用
http_realip
模块,允许 Nginx 使用X-Real-IP
或X-Forwarded-For
头来获取客户端的真实 IP 地址。 - 作用:这对于使用反向代理时非常有用。
- 说明 :启用
--with-http_stub_status_module
- 说明 :启用
http_stub_status
模块,允许 Nginx 提供一个用于监控的页面,显示当前服务器的状态信息(如请求处理情况、连接数等)。
- 说明 :启用
--with-http_gzip_static_module
- 说明 :启用
http_gzip_static
模块,允许 Nginx 提供预压缩的.gz
文件。 - 作用:以减少响应时间并节省带宽。
- 说明 :启用
--with-pcre
- 说明:启用 PCRE(Perl Compatible Regular Expressions)支持,用于 Nginx 的正则表达式功能。
- 作用:这是处理 URL 重写等任务所必需的。
--with-file-aio
- 说明:启用文件异步 I/O 支持,允许 Nginx 使用异步 I/O 操作。
- 作用:提高性能。
--with-threads
- 说明:启用线程支持,允许 Nginx 使用线程来处理请求。
- 作用:提高多核 CPU 的利用率。
--add-module=../ngx_brotli
- 说明 :添加第三方模块
ngx_brotli
,用于支持 Brotli 压缩算法。 - 作用:Brotli 是一种高效的压缩算法,可以进一步减少响应数据的大小。
- 说明 :添加第三方模块
4. 编译并安装
bash
make -j$(nproc)
sudo make install
5. 配置系统服务
5.1 创建 systemd 服务文件:
bash
sudo tee /etc/systemd/system/nginx.service <<EOF
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT \$MAINPID
TimeoutStopSec=5
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
5.2 启动并设置开机自启:
bash
sudo systemctl daemon-reload # 重新加载 systemd 守护进程
sudo systemctl enable nginx # 将 Nginx 服务配置为开机自启动
sudo systemctl start nginx # 启动 Nginx
6. 配置 Brotli 和 Gzip 压缩
编辑 Nginx 配置文件:
bash
vim /etc/nginx/nginx.conf
在 http {}
块中添加以下内容:
nginx
# Brotli 全局压缩配置(现代浏览器优先)
brotli on; # 启用 Brotli 压缩
brotli_static on; # 优先使用预压缩的 .br 文件
brotli_comp_level 6; # 压缩级别 1-11(6 是性能与压缩率的平衡点)
brotli_min_length 256; # 只压缩大于 256 字节的文件
brotli_types text/plain text/css text/javascript application/javascript application/json application/xml application/x-javascript application/xhtml+xml image/svg+xml;
# Gzip 全局压缩配置(兼容旧版浏览器)
gzip on; # 启用 Gzip 压缩
gzip_static on; # 优先使用预压缩的 .gz 文件
gzip_comp_level 6; # 压缩级别 1-9(6 是性能与压缩率的平衡点)
gzip_min_length 256; # 只压缩大于 256 字节的文件
gzip_types text/plain text/css text/javascript application/javascript application/json application/xml application/x-javascript application/xhtml+xml image/svg+xml;
检查文件是否配置成功
bash
sudo nginx -t
# 应输出:
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
重新加载配置
bash
sudo systemctl reload nginx
7. 验证安装
检查 Nginx 版本:
bash
nginx -v
验证 Brotli 是否工作:
bash
curl -H "Accept-Encoding: br" -I http://localhost | grep -i content-encoding
# 应该返回 content-encoding: br
8. 配置 HTTP 和 HTTPS
8.1 备份配置文件
bash
cd /etc/nginx
cp nginx.conf nginx.conf.back # 备份一份
8.2 编辑 Nginx 主配置文件
bash
vim nginx.conf
在 http {}
块内添加以下内容(仅仅配置 HTTPS):
nginx
server {
listen 80;
server_name pzhdv.cn www.pzhdv.cn; # 替换为你的域名或 IP 地址
# 将所有 HTTP 请求重定向到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name pzhdv.cn www.pzhdv.cn;
# SSL 配置
ssl_certificate /usr/local/resource/ssl/pzhdv.cn.pem; # 证书路径
ssl_certificate_key /usr/local/resource/ssl/pzhdv.cn.key; # 证书路径
location / {
root html;
index index.html index.htm;
}
}
9. 验证配置
测试配置文件语法:
bash
sudo nginx -t
应输出:
vbnet
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
10. 重载配置
bash
sudo systemctl reload nginx
11. 访问测试
- HTTP :浏览器访问
http://你的服务器IP
- HTTPS :浏览器访问
https://域名
以上步骤完成了 Nginx 的安装、Brotli 和 Gzip 压缩的配置,以及 HTTP 和 HTTPS 的设置。
12. 常用操作 Nginx 的系统命令
bash
# 检查 Nginx 文件是否配置成功
sudo nginx -t
# 查看 Nginx 服务的运行状态
sudo systemctl status nginx
# 启动 Nginx 服务
sudo systemctl start nginx
# 停止 Nginx 服务
sudo systemctl stop nginx
# 重启 Nginx 服务
sudo systemctl restart nginx
# 重新加载 Nginx 配置文件
sudo systemctl reload nginx
# 检查 Nginx 服务是否设置为开机自动启动
sudo systemctl is-enabled nginx
# 设置 Nginx 服务为开机自启动
sudo systemctl enable nginx
# 禁止 Nginx 服务为开机自启动
sudo systemctl disable nginx
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 验证是否开机自启动
sudo reboot # 重启系统
sudo systemctl status nginx # 查看状态
卸载 Nginx(通过 wget
安装的)
1. 停止 Nginx 服务
首先,确保 Nginx 服务已经停止运行:
bash
sudo systemctl stop nginx
或者,如果你没有使用 systemctl
,可以直接使用 Nginx 的停止命令:
bash
sudo /usr/local/nginx/sbin/nginx -s stop
2. 禁用 Nginx 服务(如果使用了 systemctl
)
如果你为 Nginx 创建了 systemd
服务文件,禁用它以防止开机自启:
bash
sudo systemctl disable nginx
如果你为 Nginx 创建了启动脚本或 systemd
服务文件,也需要删除它们:
bash
sudo rm -f /etc/systemd/system/nginx.service
sudo systemctl daemon-reload
3. 查找并删除 Nginx 相关文件
通过 wget
安装的 Nginx 通常会被安装到 /usr/local/nginx
目录下。你可以通过以下命令删除这个目录:
bash
sudo rm -rf /usr/local/nginx
此外,你还需要删除 Nginx 的配置文件和日志文件。这些文件通常位于 /etc/nginx
和 /var/log/nginx
目录下。删除这些目录:
bash
sudo rm -rf /etc/nginx
sudo rm -rf /var/log/nginx
如果你在安装过程中将配置文件放在了其他位置,请确保删除那些配置文件。
3. 查找并删除 Nginx 相关文件
通过 wget
安装的 Nginx 通常会被安装到 /usr/local/nginx
目录下。你可以通过以下命令删除这个目录:
bash
sudo rm -rf /usr/local/nginx
此外,你还需要删除 Nginx 的配置文件和日志文件。这些文件通常位于 /etc/nginx
和 /var/log/nginx
目录下。删除这些目录:
bash
sudo rm -rf /etc/nginx
sudo rm -rf /var/log/nginx
如果你在安装过程中将配置文件放在了其他位置,请确保删除那些配置文件。
4. 删除 Nginx 的安装包和源码
如果你在安装过程中下载了 Nginx 的源码包,也需要删除它。通常,源码包会被下载到 /usr/local/softpackage
或其他临时目录中。删除下载的文件:
bash
sudo rm -rf /usr/local/softpackage/nginx-*.tar.gz
sudo rm -rf /usr/local/softpackage/nginx-*
6. 清理残留文件
使用 find
命令查找系统中可能残留的 Nginx 相关文件:
bash
sudo find / -name "*nginx*"
根据输出结果,删除所有与 Nginx 相关的文件和目录。例如:
bash
sudo rm -rf /usr/local/nginx
sudo rm -rf /etc/nginx
sudo rm -rf /var/log/nginx
sudo rm -rf /var/cache/nginx
sudo rm -rf /var/lib/nginx
7. 验证是否卸载成功
执行以下命令,检查是否还有 Nginx 的进程或服务:
bash
ps -ef | grep nginx
如果没有输出,说明 Nginx 已经完全卸载。