Nginx 的安装与卸载
Nginx 安装
以下是在 CentOS 7.9 上通过源码编译安装 Nginx,并配置 Brotli、Gzip 压缩及 HTTP、HTTPS 的完整步骤。
1. 安装编译器和工具
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 模块
# 进入下载目录 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 支持)
./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. 编译并安装
make -j$(nproc) sudo make install
5. 配置系统服务
5.1 创建 systemd 服务文件:
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 启动并设置开机自启:
sudo systemctl daemon-reload # 重新加载 systemd 守护进程 sudo systemctl enable nginx # 将 Nginx 服务配置为开机自启动 sudo systemctl start nginx # 启动 Nginx
6. 配置 Brotli 和 Gzip 压缩
编辑 Nginx 配置文件:
vim /etc/nginx/nginx.conf
在 http {}
块中添加以下内容:
# 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;
检查文件是否配置成功
sudo nginx -t # 应输出: # nginx: the configuration file /etc/nginx/nginx.conf syntax is ok # nginx: configuration file /etc/nginx/nginx.conf test is successful
重新加载配置
sudo systemctl reload nginx
7. 验证安装
检查 Nginx 版本:
nginx -v
验证 Brotli 是否工作:
curl -H "Accept-Encoding: br" -I http://localhost | grep -i content-encoding # 应该返回 content-encoding: br
8. 配置 HTTP 和 HTTPS
8.1 备份配置文件
cd /etc/nginx cp nginx.conf nginx.conf.back # 备份一份
8.2 编辑 Nginx 主配置文件
vim nginx.conf
在 http {}
块内添加以下内容(仅仅配置 HTTPS):
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. 验证配置
测试配置文件语法:
sudo nginx -t
应输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
10. 重载配置
sudo systemctl reload nginx
11. 访问测试
- HTTP:浏览器访问
http://你的服务器IP
- HTTPS:浏览器访问
https://域名
以上步骤完成了 Nginx 的安装、Brotli 和 Gzip 压缩的配置,以及 HTTP 和 HTTPS 的设置。
12. 常用操作 Nginx 的系统命令
# 检查 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 服务已经停止运行:
sudo systemctl stop nginx
或者,如果你没有使用 systemctl
,可以直接使用 Nginx 的停止命令:
sudo /usr/local/nginx/sbin/nginx -s stop
2. 禁用 Nginx 服务(如果使用了 systemctl
)
如果你为 Nginx 创建了 systemd
服务文件,禁用它以防止开机自启:
sudo systemctl disable nginx
如果你为 Nginx 创建了启动脚本或 systemd
服务文件,也需要删除它们:
sudo rm -f /etc/systemd/system/nginx.service sudo systemctl daemon-reload
3. 查找并删除 Nginx 相关文件
通过 wget
安装的 Nginx 通常会被安装到 /usr/local/nginx
目录下。你可以通过以下命令删除这个目录:
sudo rm -rf /usr/local/nginx
此外,你还需要删除 Nginx 的配置文件和日志文件。这些文件通常位于 /etc/nginx
和 /var/log/nginx
目录下。删除这些目录:
sudo rm -rf /etc/nginx sudo rm -rf /var/log/nginx
如果你在安装过程中将配置文件放在了其他位置,请确保删除那些配置文件。
3. 查找并删除 Nginx 相关文件
通过 wget
安装的 Nginx 通常会被安装到 /usr/local/nginx
目录下。你可以通过以下命令删除这个目录:
sudo rm -rf /usr/local/nginx
此外,你还需要删除 Nginx 的配置文件和日志文件。这些文件通常位于 /etc/nginx
和 /var/log/nginx
目录下。删除这些目录:
sudo rm -rf /etc/nginx sudo rm -rf /var/log/nginx
如果你在安装过程中将配置文件放在了其他位置,请确保删除那些配置文件。
4. 删除 Nginx 的安装包和源码
如果你在安装过程中下载了 Nginx 的源码包,也需要删除它。通常,源码包会被下载到 /usr/local/softpackage
或其他临时目录中。删除下载的文件:
sudo rm -rf /usr/local/softpackage/nginx-*.tar.gz sudo rm -rf /usr/local/softpackage/nginx-*
6. 清理残留文件
使用 find
命令查找系统中可能残留的 Nginx 相关文件:
sudo find / -name "*nginx*"
根据输出结果,删除所有与 Nginx 相关的文件和目录。例如:
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 的进程或服务:
ps -ef | grep nginx
如果没有输出,说明 Nginx 已经完全卸载。