如何使用nginx提供图片

alen0pnh  于 2023-06-21  发布在  Nginx
关注(0)|答案(3)|浏览(120)

我对nginx完全陌生,我被要求找到一种方法来服务根据缩放级别分离的Map瓷砖。图像文件结构类似于~/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下,把tile图像放在/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文件)

我错过了什么?

pengsaosao

pengsaosao1#

好吧,让我解释一下,你已经有了一个本地主机服务器,它在一个名为default的文件中定义,这个文件会导致“欢迎使用nginx”或其他内容出现,我相信你不能用同样的server_name创建一个新服务器,让我们删除它,让你的本地主机只提供这些图像,

  • 首先,我们需要从sites-enabled中删除default文件,如果您想要恢复它,它仍然存在于sites-available中。* (注意,sites-enabled中的所有文件都是来自sites-available中文件的符号链接)*
  • 我们在sites-available中创建一个新文件,并将其命名为任意名称,例如images-app
  • images-app文件中创建新的服务器,我假设应用程序的根目录位于名为/data的文件夹中,当然,您将Map到您自己的服务器结构。
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
k97glaaz

k97glaaz2#

在我的例子中,我只是编辑了/etc/nginx/sites-enabled/default文件。
我添加了以下配置:

location /images/ {
            root /data;
        }

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

URL工作:http://localhost/images/example.png
我使用VS代码作为超级用户。(我知道这很糟糕,但我接受风险)它对根访问文件编辑有很大帮助:

ddrv8njm

ddrv8njm3#

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

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

原因是:

sites-enabled/default定义了服务器

这是听80生根与/var/www/html

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/myusername/上的root,但会得到403 Forbidden错误,请检查错误日志:

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"

相关问题