CentOS Nginx 安装与静态文件服务器配置指南

一、 Nginx 的安装

1. 安装 EPEL 源并下载 Nginx

在 CentOS 上,Nginx 通常不包含在默认官方源中,需要先安装 EPEL 扩展源:

bash 复制代码
# 1. 安装 EPEL 扩展源
sudo yum install -y epel-release

# 2. 安装 Nginx
sudo yum install -y nginx

2. 管理 Nginx 服务进程

bash 复制代码
# 启动 Nginx
sudo systemctl start nginx

# 设置开机自启
sudo systemctl enable nginx

# 查看运行状态
sudo systemctl status nginx

# 修改配置后重载服务(平滑重启,不中断连接)
sudo systemctl reload nginx

二、 创建共享文件夹并配置文件权限

为了让 Nginx 能够读取并展示文件,需要准备对应的目录并授予正确的读取权限。

1. 创建共享目录

bash 复制代码
sudo mkdir -p /var/www/share_files

2. 设置目录所有者与读取权限

CentOS 系统下 Nginx 的默认运行用户是 nginx。如果权限不正确,访问时会出现 403 Forbidden 错误。

bash 复制代码
# 1. 将目录所有者变更为 nginx 用户
sudo chown -R nginx:nginx /var/www/share_files

# 2. 赋予该目录及其子目录 755 权限(所有者可写,所有用户可读、可执行)
sudo chmod -R 755 /var/www/share_files

3. 生成测试文件(用于后续验证)

bash 复制代码
echo "hello Nginx File Serve" | sudo tee /var/www/share_files/test.txt

三、 配置静态文件服务

Nginx 允许我们在 /etc/nginx/conf.d/ 目录下创建独立的 .conf 文件来管理不同的虚拟主机。

1. 创建配置文件

bash 复制代码
sudo vi /etc/nginx/conf.d/file_server.conf

2. 写入配置内容

使用非标准端口(如 8088 )以绕过国内云厂商对未备案域名的 80/443 端口拦截:

nginx 复制代码
server {
    # 监听端口(避开 80/443/8080 备案限制端口)
    listen 8088;
    server_name localhost; # 或者填写您的服务器公网 IP

    # 文件存放的绝对路径根目录
    root /var/www/share_files;

    location / {
        # 1. 开启目录浏览功能
        autoindex on;

        # 2. 友好展示文件大小(关闭 exact_size 后会显示成 KB/MB/GB,更直观)
        autoindex_exact_size off;

        # 3. 开启本地时间显示(默认 off 会显示 GMT 慢 8 小时的时间)
        autoindex_localtime on;

        # 4. 彻底解决网页上中文文件名乱码问题
        charset utf-8,gbk;

        # 5. 支持跨域(如果其他前端页面需要请求这些文件)
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    }
}

3. 保存并检查配置文件语法

在命令行中执行以下命令以确认配置文件语法无误:

bash 复制代码
sudo nginx -t

如果输出中包含 syntax is ok 和 test is successful,说明配置完全正确。

4. 重载配置使之生效

bash 复制代码
sudo systemctl reload nginx

四、 防火墙与网络放行

在配置完成后,如果外部依然无法访问,请按以下步骤逐一排查:

1. 服务器本地回路测试

在服务器终端中执行本地请求,验证 Nginx 是否已在本地正常工作:

bash 复制代码
curl -I http://127.0.0.1:8088

如果返回了 HTTP/1.1 200 OK 并且带有您配置的 Headers,说明本地 Nginx 逻辑完全正常。

2. 系统防火墙(Firewalld)排查

  • 情况 A:Firewalld 处于激活状态 您需要手动放行 8088 端口:

    bash 复制代码
    sudo firewall-cmd --zone=public --add-port=8088/tcp --permanent
    sudo firewall-cmd --reload
  • 情况 B:Firewalld 未运行(提示 FirewallD is not running) 说明系统防火墙已关闭,系统本身没有限制,跳过此步骤即可。

3. 云厂商网关拦截与安全组配置(关键)

  • 放行端口 :需要登录腾讯云(或阿里云)控制台,在对应服务器的 安全组/防火墙 规则中添加一条入方向规则:协议为 TCP,端口为 8088,策略为 允许。
  • 规避 ICP 备案拦截 :在国内云服务器直接访问 IP 的 80、443 或 8080 端口时,常常会被云服务商的安全阻断系统拦截(浏览器报错 ERR_CONNECTION_CLOSED)。使用 8088 等非标准端口可以完美避开备案检查。

五、 常用运维命令总结

操作 命令
测试配置文件 nginx -t
平滑重载配置 systemctl reload nginx
重启 Nginx 服务 systemctl restart nginx
查看监听端口 ss -tlnp 或 netstat -tlnp
查看 Nginx 日志 默认错误日志:/var/log/nginx/error.log 默认访问日志:/var/log/nginx/access.log
相关推荐
Dawson Zhu5 小时前
《Agentic Design Patterns》第 1 章导读:提示词链(Prompt Chaining)
人工智能·语言模型·架构·aigc·agi
feiyu_gao5 小时前
Mindcraft:从个人实践到可复用模式集
架构·aigc·ai编程
库拉镜像AI牛牛5 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别
abigalexy5 小时前
Claude Code从零搭建新项目全流程AI实现-宠物生命周期管理App
架构·aigc·ai编程
律宏阔5 小时前
Flutter 列表图片内存优化:CachedNetworkImage 与 ClipRRect 的取舍
前端·flutter
行者全栈架构师5 小时前
【鸿蒙心迹】相册文搜图工程化落地:HarmonyOS 7.0 端侧 AI 检索全链路实战与 5 个踩坑解法
前端
律宏阔5 小时前
Dart 3 Record:解决 Future.wait 异构返回值的类型问题
前端·flutter
花间相见5 小时前
【后端开发|Redis进阶01】—— Redis分布式锁全解:从SETNX到Redisson看门狗,再到RedLock
后端·面试
Seraphina365 小时前
DVWA(XSS Reflected/Stored High,CSRF Low)
前端·xss·csrf
写后端的胖头鱼6 小时前
【高频面试题】微服务项目排查错误流程(万字详解)
微服务·架构·问题定位·链路·线上排错