Linux 系统上安装 Nginx以及使用,推荐使用编译安装

安装前准备

确认当前系统版本,执行以下命令查看发行版信息:

bash 复制代码
cat /etc/os-release

Ubuntu/Debian 安装方法

更新软件源并升级现有包:

bash 复制代码
sudo apt update && sudo apt upgrade -y

安装 Nginx 软件包:

bash 复制代码
sudo apt install nginx -y

启动服务并设置开机自启:

bash 复制代码
sudo systemctl start nginx  
sudo systemctl enable nginx

验证安装:

  • 浏览器访问服务器 IP,或执行:
bash 复制代码
curl -I http://localhost

预期输出包含 HTTP/1.1 200 OK


CentOS/RHEL 安装方法

添加 EPEL 仓库:

bash 复制代码
sudo yum install epel-release -y

安装 Nginx:

bash 复制代码
sudo yum install nginx -y

启动服务并配置防火墙:

bash 复制代码
sudo systemctl start nginx  
sudo systemctl enable nginx  
sudo firewall-cmd --permanent --add-service={http,https}  
sudo firewall-cmd --reload

编译安装(高级选项)

安装编译依赖:

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

下载并解压源码:

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

配置编译参数(示例启用 SSL 和 HTTP/2):

bash 复制代码
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module

编译并安装:

bash 复制代码
make && sudo make install

启动服务:

bash 复制代码
sudo /usr/local/nginx/sbin/nginx

关键文件路径

  • Ubuntu/Debian

    • 主配置:/etc/nginx/nginx.conf
    • 虚拟主机:/etc/nginx/sites-available//etc/nginx/sites-enabled/
  • CentOS/RHEL

    • 主配置:/etc/nginx/nginx.conf
    • 扩展配置:/etc/nginx/conf.d/

建议

  • 生产环境推荐使用包管理器安装,稳定性更高。
  • 仅当需要自定义模块或特定功能时选择编译安装。

确认 Nginx 安装目录

编译安装的 Nginx 默认路径为 /usr/local/nginx,关键子目录包括:

  • 配置文件:/usr/local/nginx/conf/nginx.conf
  • 默认网站根目录:/usr/local/nginx/html
  • 日志目录:/usr/local/nginx/logs

准备项目文件

将项目文件(如前端静态资源或后端构建产物)放置于统一目录,例如 /var/www/myproject。典型结构如下:

复制代码
/var/www/myproject
├── index.html
├── css/style.css
└── js/app.js

配置 Nginx 虚拟主机

编辑配置文件 /usr/local/nginx/conf/nginx.conf,修改或新增 server 块:

nginx 复制代码
server {
    listen 80;
    server_name localhost;  # 替换为实际域名如 example.com

    location / {
        root /var/www/myproject;
        index index.html;
        try_files $uri $uri/ /index.html;  # 支持前端路由
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/local/nginx/html;
    }
}

验证配置并重启

执行语法检查:

bash 复制代码
sudo /usr/local/nginx/sbin/nginx -t

若无错误,重载配置:

bash 复制代码
sudo /usr/local/nginx/sbin/nginx -s reload

设置文件权限

确保 Nginx 进程用户(通常为 nginxwww-data)有访问权限:

bash 复制代码
sudo chown -R nginx:nginx /var/www/myproject
sudo chmod -R 755 /var/www/myproject

注意事项

防火墙:如果服务器有防火墙,需要开放 80 端口:

bash

运行

sudo firewall-cmd --permanent --add-port=80/tcp

sudo firewall-cmd --reload

访问测试

通过命令行或浏览器验证:

bash 复制代码
curl http://localhost

或浏览器访问服务器 IP/域名。

多站点配置示例

nginx.conf 中追加多个 server 块实现多项目部署:

nginx 复制代码
server {
    listen 80;
    server_name site1.com;
    root /var/www/site1;
    index index.html;
}

server {
    listen 80;
    server_name site2.com;
    root /var/www/site2;
    index index.html;
}

常用操作命令

  • 检查配置:sudo /usr/local/nginx/sbin/nginx -t

  • 重载配置:sudo /usr/local/nginx/sbin/nginx -s reload

  • 停止服务:sudo /usr/local/nginx/sbin/nginx -s stop

  • 查看实时日志:

    bash 复制代码
    sudo tail -f /usr/local/nginx/logs/access.log
    sudo tail -f /usr/local/nginx/logs/error.log

进阶场景

  • 前端路由支持 :在 location / 中添加 try_files $uri $uri/ /index.html

  • 反向代理 :若需代理后端 API,示例配置:

    nginx 复制代码
    location /api/ {
        proxy_pass http://backend_server:3000;
        proxy_set_header Host $host;
    }
  • HTTPS 配置 :使用 Let's Encrypt 证书并修改 server 块监听 443 端口。

相关推荐
文静小土豆14 分钟前
Rocky Linux 二进制 安装K8S-1.35.0高可用集群
linux·运维·kubernetes
小技工丨19 分钟前
华为TaiShan 200 2280 ARM服务器虚拟化部署完整指南
运维·服务器·arm开发
暮云星影38 分钟前
二、linux系统 应用开发:整体Pipeline流程
linux·arm开发
weixin_430750932 小时前
OpenMediaVault debian Linux安装配置企业私有网盘(三) 静态ip地址配置
linux·服务器·debian·nas·网络存储系统
403240732 小时前
[Jetson/Ubuntu 22.04] 解决挂载 exFAT 硬盘报错 “unknown filesystem type“ 及只读权限问题的终极指南
linux·运维·ubuntu
Source.Liu2 小时前
【沟通协作软件】使用 Rufus 制作 Ubuntu 启动盘的详细过程
linux·ubuntu
零意@2 小时前
debian如何把新编译的内核镜像替换原来的内核
运维·debian·更新内核版本·linux内核版本更新·debian更新内核
Love丶伊卡洛斯2 小时前
Ubuntu 部署 STUN服务端
linux·运维·ubuntu
梁洪飞3 小时前
通过链接文件和Start.S学习armv7
linux·arm开发·嵌入式硬件·学习·arm
DN金猿3 小时前
使用ubuntu安装nginx时报错
linux·nginx·ubuntu