🚀 服务器还能这么用?CentOS 服务器部署 Nginx 图片服务指南

35 阅读3分钟

本文档基于 CentOS 系统,指导您如何部署 Nginx 作为高性能图片访问服务器,并提供详细的故障排除步骤。

一、部署方法 (Nginx 配置)

以下步骤假定图片文件存放在 /data/images 目录下,并通过 注册的域名或外网地址 提供访问。

1. 准备图片存储目录与权限

重要性: 正确的权限是避免 403 Forbidden 错误的关键。

# 1. 创建图片存储目录
sudo mkdir -p /data/images
​
# 2. 更改所有权 (解决 'root' 文件无法访问的问题)
# 将所有权递归地更改为 Nginx 运行用户 (通常是 nginx)
sudo chown -R nginx:nginx /data/images/
​
# 3. 设置权限
# 递归地设置文件权限为 644 (所有者可读写,其他人只读)
sudo find /data/images -type f -exec chmod 644 {} ;
# 递归地设置目录权限为 755 (所有者可读写执行,其他人只读执行/可进入)
sudo find /data/images -type d -exec chmod 755 {} ;

2. 安装与启动 Nginx

# 安装 Nginx
sudo yum install nginx
​
# 启动 Nginx 服务
sudo systemctl start nginx
​
# 设置开机自启
sudo systemctl enable nginx

3. 配置 Nginx 虚拟主机

编辑 Nginx 配置文件,确保 root 路径指向您的图片目录。

创建或编辑虚拟主机配置文件

sudo vi /etc/nginx/conf.d/default.conf

server {
    listen 80;
    # 替换为您的域名,如 注册的域名.cn
    server_name  localhost 注册的域名.cn; 
​
    # 关键配置:location 块
    location / {
        # ⭐⭐⭐ 核心配置:root 必须指向图片的绝对存储路径 ⭐⭐⭐
        # 解决日志中出现 'open() "/usr/share/nginx/html/..." failed' 的 404 错误
        root /data/images;
        
        # 尝试查找文件,如果找不到则返回 404
        try_files $uri $uri/ =404;
​
        # 可选:设置图片缓存时间 (提高浏览器访问速度)
        expires 30d; 
    }
    
    # ... 其他配置,如错误页 ...
}

4. 测试与重载 Nginx

# 1. 测试配置文件语法是否正确 (必须显示 test is successful)
sudo nginx -t
​
# 2. 如果测试通过,重载 Nginx 服务
sudo systemctl reload nginx

5. 开放防火墙端口

确保您的服务器防火墙和云服务商的安全组都开放了 80 端口(HTTP)。

# CentOS 防火墙开放 80 端口
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

想让 注册的域名.cn 同时提供网站和图片服务,如何做更复杂的 location 配置来区分?

🛠️ 推荐配置: (基于路径区分更灵活)

假设:

  • 网站主体根目录: /usr/share/nginx/html
  • 图片存储根目录: /data/images

您可以将之前的 default.conf 修改为如下配置:

server {
    listen 80;
    server_name  localhost iloveknowledge.cn www.iloveknowledge.cn;
​
    # 1. 网站主体 location 块 (最低优先级,作为默认处理)
    # 网站服务
    location / {
        root /usr/share/nginx/html; # <-- 网站 HTML/CSS/JS 文件的根目录
        index index.html index.htm;
        
        # 尝试查找文件,如果找不到则返回 404
        try_files $uri $uri/ =404; 
    }
​
    #图片资源访问服务
    location /images/ {
        # 'root' 指令:Nginx 会将请求 URI (/images/logo.jpg) 附加到 root 路径上
        # 实际查找路径: /data/images/images/logo.jpg  <-- 注意这里有重复的 /images/
        # 因此,你需要确保你的图片文件放在 /data/images/images/ 目录下
      # root /data/images;

        # 更好的做法是使用 alias,但如果目录结构一致,root 也可以:
        alias /data/images/;

        # 提高图片访问性能
        expires 30d;
        access_log off;
        log_not_found off;
    }
​
    # ... 其他错误页配置 ...
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
}