如何使用nginx提供图像

时间:2013-09-23 08:31:10

标签: configuration nginx configuration-files

我是nginx的新手,我被要求找到一种方法来提供根据缩放级别分离的Map Tiles。图像文件结构类似于~/data/images/7/65/70.png,其中7是缩放级别,65和70是lon-lat值。文件夹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文件)

我错过了什么?

3 个答案:

答案 0 :(得分:15)

好的,让我解释一下,你已经有了一个localhost服务器,它在一个名为default的文件中定义,该文件导致“欢迎使用nginx”或者出现一些东西,我相信你无法创建具有相同server_name的新服务器,让我们将其删除并使您的localhost仅为这些图像服务,

  • 首先,我们需要从default删除sites-enabled文件,如果您想要将其恢复,它仍会存在于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
    

答案 1 :(得分:3)

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

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

原因是:

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/*;

注意许可

my.conf的第1版是/ 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"

答案 2 :(得分:0)

对于我来说,我只是编辑了/etc/nginx/sites-enabled/default文件。

我添加了以下配置:

location /images/ {
            root /data;
        }

并将图像放置在/data/images下:

enter image description here

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

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

enter image description here