Как подавать изображений в nginx

Я новичок в nginx и я попросил найти способ, чтобы обслуживать карты, которые разделены в соответствии с уровнями масштабирования. Структура файла изображения похожа на ~/data/images/7/65/70.png где 7-уровень масштабирования, 65 и 70-значения lon-lat. Папка 65 содержит много файлов, таких как 71.ПНГ, 72.PNG и т. д.

Я правильно установил Nginx, и я могу получить Welcome to nginx сообщение. Я следовал инструкциям в http://nginx.org/en/docs/beginners_guide.html и создал /data/www и /data/images справочники. Я поместил индекс.HTML-файл под /data/www и плитки изображения под /data/images. Затем я изменил файл конфигурации, добавив следующие строки в теги http:

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

    location /images/ {
        root /data;
    }
}

после перезагрузки файла конфигурации и ввода localhost в браузере я не могу получить индекс.html-файл и не видеть изображения.

то, что я пытаюсь сделать, это отобразить изображение, когда я ввожу что-то как:

http://localhost/1.0.0/basemap/7/65/70.png
  • 7: папка с указанием 7-й масштаб
  • 65: папка указание широты
  • 70.png: файл с указанием долготы (папка 65 включает в себя много файлов png)

что я упустил?

2 ответов


хорошо, позвольте мне кое-что объяснить, у вас уже есть сервер localhost, который определен внутри файла с именем default это файл, который вызывает "Добро пожаловать в nginx" или что-то появляется, и я считаю, что вы не можете создать новый сервер с тем же server_name, давайте удалим это и сделаем ваш localhost служить только эти изображения,

  • Сначала нам нужно удалить С sites-enabled, он все еще будет существовать внутри sites-available если вы когда-нибудь захотите получить его обратно. ( обратите внимание, что все файлы внутри sites-enabled просто символические ссылки из файлов внутри sites-available )
  • мы создаем новый файл внутри sites-available и называйте это как хотите,
  • создайте новый сервер внутри 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
    

Я также новичок в nginx, вот мое решение, которое похоже на ответ Мухаммеда Абушади:

  • удалить sites-enabled/default
  • создать whatever.conf на /etc/nginx/conf.d/

причина:

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;
    }
}

the nginx.conf файл включает в себя другие файлы conf

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

обратите внимание на разрешите!--19-->

1-е издание моей.conf является root on/home/ scotv/, но получит 403 запрещенную ошибку, проверьте ошибку.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"