Как подавать изображений в 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"