【问题标题】:How to serve images with nginx如何使用 nginx 提供图像
【发布时间】:2013-09-28 02:07:06
【问题描述】:

我对 nginx 完全陌生,我被要求找到一种方法来提供根据缩放级别分开的地图图块。图像文件结构类似于~/data/images/7/65/70.png,其中 7 是缩放级别,65 和 70 是经纬度值。文件夹65包含71.png、72.png等多个文件。

我已经正确安装了 Nginx,我可以收到Welcome to nginx 消息。我按照http://nginx.org/en/docs/beginners_guide.html 中的说明创建了/data/www/data/images 目录。我已将 index.html 文件放在/data/www 下,并将平铺图像放在/data/images 下。然后我通过在 http 标签中添加以下行来修改配置文件:

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

重新加载配置文件并在浏览器上输入 localhost 后,我​​既无法获取 index.html 文件,也无法查看图像。

我要做的是在输入以下内容时显示图像:

http://localhost/1.0.0/basemap/7/65/70.png
  • 7:表示第 7 个缩放级别的文件夹
  • 65:表示纬度的文件夹
  • 70.png:表示经度的文件(文件夹65包含很多png文件)

我错过了什么?

【问题讨论】:

  • 为什么要创建一个新的服务器块,您计划通过什么 URL 访问这些图像,它们仍然是 localhost 还是您有一个指向您的服务器的域
  • 他们是本地主机。没有域。我创建了新的服务器块,因为初学者指南是这样说的
  • /etc/nginx 中是否有 sites-enabledsites-available 文件夹?
  • 是的,这些文件夹在 /etc/nginx 里面,并且里面都有 default 文件。我也编辑了OP,请检查

标签: configuration nginx configuration-files


【解决方案1】:

好吧,让我解释一下,你已经有一个 localhost 服务器,它在一个名为 default 的文件中定义,该文件会导致“欢迎使用 nginx”或其他内容出现,我相信你可以' t 创建一个具有相同 server_name 的新服务器,让我们删除它并让您的 localhost 只提供这些图像,

  • 首先我们需要从sites-enabled 中删除default 文件,如果你想找回它,它仍然存在于sites-available 中。 (请注意,sites-enabled 中的所有文件都只是来自 sites-available 中的文件的符号链接)
  • 我们在sites-available 中创建一个新文件,然后随意命名,例如images-app
  • images-app 文件中创建新服务器,我假设应用程序的根目录位于名为/data 的文件夹中,当然您会将其映射到您自己的服务器结构。

    server {
        server_name localhost;
        root /data;
        index index.html;
        location / {
            try_files $uri =404;
        }
    }
    
  • 现在我们转到sites-enabled 并启用我们在sites-available 中创建的这个站点

    sudo ln -s /etc/nginx/sites-available/images-app /etc/nginx/sites-enabled/
    
  • 确保所有 nginx 配置正确

    sudo nginx -t
    
  • 如果没有问题,我们可以继续重新加载 nginx 设置

    sudo service nginx reload
    

【讨论】:

  • 这是非常详细和有启发性的。由于磁盘错误,我不得不删除我的虚拟机。我现在正在重新安装它,并会在安装完成后尝试。非常感谢
  • 我刚刚有机会尝试一下,它就像一个魅力。感谢您的详细回答和您的时间
【解决方案2】:

我也是 nginx 新手,这是我的解决方案,与 Mohammad AbuShady 的回答类似:

  • 删除sites-enabled/default
  • /etc/nginx/conf.d/ 中创建whatever.conf

原因是:

sites-enabled/default 定义了一个服务器

那是用 /var/www/html 监听 80 生根

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  root /var/www/html;
  location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
}

nginx.conf 文件包括其他配置文件

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

注意权限

第 1 版 my.conf 是 /home/scotv/ 上的 root,但会收到 403 Forbidden 错误,请查看 error.log:

2016/04/07 20:12:44 [error] 12466#0: *2 open() "/home/scotv/data/a" failed (13: Permission denied), 
client: 127.0.0.1, server: , request: "GET /a HTTP/1.1", host: "localhost"

【讨论】:

    【解决方案3】:

    就我而言,我刚刚编辑了/etc/nginx/sites-enabled/default 文件。

    我添加了以下配置:

    location /images/ {
                root /data;
            }
    

    并在/data/images下放置图片:

    网址有效:http://localhost/images/example.png

    我使用 VS Code 作为超级用户。 (我知道这很糟糕,但我接受风险) 它对 root 访问文件编辑有很大帮助:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 2019-02-20
      • 2018-12-03
      • 1970-01-01
      相关资源
      最近更新 更多