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 端口。

相关推荐
开开心心就好6 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
火车叼位7 小时前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
鹏北海7 小时前
micro-app 微前端项目部署指南
前端·nginx·微服务
予枫的编程笔记7 小时前
【Linux进阶篇】从基础到实战:grep高亮、sed流编辑、awk分析,全场景覆盖
linux·sed·grep·awk·shell编程·文本处理三剑客·管道命令
Sheep Shaun7 小时前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区
Tfly__7 小时前
在PX4 gazebo仿真中加入Mid360(最新)
linux·人工智能·自动驾驶·ros·无人机·px4·mid360
陈桴浮海7 小时前
【Linux&Ansible】学习笔记合集二
linux·学习·ansible
迎仔7 小时前
06-存储设备运维进阶:算力中心的存储管家
运维
生活很暖很治愈7 小时前
Linux——环境变量PATH
linux·ubuntu
?re?ta?rd?ed?7 小时前
linux中的调度策略
linux·运维·服务器