Linux 系统安装 Nginx

安装依赖包

在安装 Nginx 之前,需要确保系统已安装必要的依赖包。运行以下命令安装编译工具和库文件:

bash 复制代码
sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

对于基于 Red Hat 的系统(如 CentOS、RHEL),使用以下命令:

bash 复制代码
sudo yum groupinstall "Development Tools"
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel

下载 Nginx 源码

访问 Nginx 官方网站(https://nginx.org/en/download.html)获取最新稳定版的下载链接。使用 wget 下载源码包:

bash 复制代码
wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar -zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3

编译与安装

运行 configure 脚本配置编译选项。以下是一个常用配置示例,支持 HTTPS 和常用模块:

bash 复制代码
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre

编译并安装:

bash 复制代码
make
sudo make install

配置系统服务

创建 systemd 服务文件以便管理 Nginx。新建文件 /etc/systemd/system/nginx.service,内容如下:

ini 复制代码
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.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

重新加载 systemd 并启动 Nginx:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl enable nginx

验证安装

检查 Nginx 是否正常运行:

bash 复制代码
curl -I 127.0.0.1

输出应包含 HTTP/1.1 200 OK。通过浏览器访问服务器 IP 地址,应看到 Nginx 默认欢迎页面。

防火墙配置

如果系统启用了防火墙,需放行 HTTP(80)和 HTTPS(443)端口:

bash 复制代码
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

对于 firewalld(CentOS/RHEL):

bash 复制代码
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

更新与维护

后续升级 Nginx 版本时,重复下载源码、编译安装的步骤,并替换旧版本文件。建议备份原有配置目录(/usr/local/nginx/conf)后再执行升级操作。

相关推荐
徐小黑ACG9 小时前
nginx配置文件
linux·服务器·nginx
考虑考虑12 小时前
nginx打印请求日志
运维·后端·nginx
Rain的Java大神之路1 天前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
Lsetea2 天前
Nginx报SSL_CTX_use_PrivateKey failed:证书与私钥不匹配怎么排查
nginx·https·ssl证书·openssl·私钥
!chen2 天前
客户环境 Nginx 配置流式报表与超时排查
运维·nginx
大喵桑丶2 天前
AlmaLinux 9 上基于 PostgreSQL + Nginx 部署高可用轻量级 Gitea 服务
nginx·postgresql·gitea
我最爱吃鱼香茄子3 天前
【踩坑实录】若依Vue宝塔部署:验证码空白、反复提示登录状态已过期|完整排错
nginx·宝塔·若依·ruoyi‑vue·登录状态已过期
dazhong20123 天前
Docker 进阶篇(二) Docker Compose 部署 Nginx 实践
nginx·docker·容器
笑梦无境3 天前
nginx安装(5)
linux·运维·nginx
墨着染霜华4 天前
SpringCloud Gateway线上Nginx代理后自定义下划线请求头丢失(app_name/app_version获取不到)完美解决
nginx·spring cloud·gateway