如何使用nginx提供图像

iso*_*01_ 10 configuration nginx configuration-files

我是nginx的新手,我被要求找到一种方法来提供根据缩放级别分离的Map Tiles.图像文件结构类似于~/data/images/7/65/70.png7是缩放级别,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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

http://localhost/1.0.0/basemap/7/65/70.png
Run Code Online (Sandbox Code Playgroud)
  • 7:指示第7缩放级别的文件夹
  • 65:表示纬度的文件夹
  • 70.png:指示经度的文件(文件夹65包含许多png文件)

我错过了什么?

Moh*_*ady 16

好吧,让我解释一下,你已经有了一个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;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 现在我们去sites-enabled启用我们在里面创建的这个网站sites-available

    sudo ln -s /etc/nginx/sites-available/images-app /etc/nginx/sites-enabled/
    
    Run Code Online (Sandbox Code Playgroud)
  • 确保所有nginx配置都正确

    sudo nginx -t
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果没有错,我们可以继续并重新加载nginx设置

    sudo service nginx reload
    
    Run Code Online (Sandbox Code Playgroud)

  • 我刚刚有机会尝试这个,它就像一个魅力.谢谢您的详细答案和时间 (2认同)

sco*_*ozv 6

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

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

原因是:

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

正在使用 /var/www/html 监听 80 root

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

nginx.conf文件包含其他conf文件

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
Run Code Online (Sandbox Code Playgroud)

注意权限

my.conf 的第一版是 /home/myusername/ 上的 root,但会收到 403 Forbidden 错误,检查 error.log:

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


Teo*_*ahi 5

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

我添加了以下配置:

location /images/ {
            root /data;
        }
Run Code Online (Sandbox Code Playgroud)

并将图像放置在/data/images

在此处输入图片说明

和 url 有效:http://localhost/images/example.png

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

在此处输入图片说明