19

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

我已经正确安装了 Nginx,我可以收到Welcome to nginx消息。我已按照 in 中的说明http://nginx.org/en/docs/beginners_guide.html创建了/data/wwwand/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文件)

我错过了什么?

4

3 回答 3

26

好的,让我解释一下,您已经有一个 localhost 服务器,它在一个名为的文件中定义default,该文件是导致“欢迎使用 nginx”或出现某些内容的文件,我相信您无法创建一个新服务器同样server_name,让我们​​删除它并让您的本地主机只提供这些图像,

  • 首先,我们需要从 中删除default文件,如果您想取回它sites-enabled,它仍然存在于其中。(请注意,里面的所有文件都只是里面文件的符号链接sites-availablesites-enabledsites-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
    
于 2013-09-23T09:15:42.443 回答
7

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

我添加了以下配置:

location /images/ {
            root /data;
        }

并将图像放置在/data/images

在此处输入图像描述

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

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

在此处输入图像描述

于 2018-12-16T03:33:39.017 回答
5

我也是 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文件包括其他 conf 文件

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

注意许可

my.conf 的第一版是 /home/scotv/ 上的根目录,但会收到 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"
于 2016-04-07T12:49:37.877 回答