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

相关推荐
学习嵌入式的王饱饱2 小时前
2.Linux开发板、树莓派、香橙派等安装VNC远程桌面
linux·远程桌面·vnc·开发板远程桌面
zly35002 小时前
CentOS系统下查看与修改网卡UUID的完整指南
linux·运维·centos
herinspace2 小时前
管家婆软件套接字服务器打不开怎么解决
运维·服务器·数据库
txzz88882 小时前
CentOS-Stream-10 搭建FTP服务器之虚拟用户访问(一)
linux·服务器·centos·ftp虚拟用户访问·vsftp
charlie1145141912 小时前
快速备份与恢复 Conda 环境
linux·开发语言·windows·深度学习·机器学习·conda·环境配置
wxmtwfx2 小时前
Linux内核时钟芯片DS3232驱动源码分析
linux·驱动开发·spi·i2c·ds3232
deriva2 小时前
windows系统安装linux并docker部署.netcore项目
linux·docker·.netcore
可爱又迷人的反派角色“yang”2 小时前
docker(五)
linux·运维·网络·docker·容器·云计算
chasemydreamidea2 小时前
L2 Intern-S1/InternVL 微调公式识别实践
运维·ssh