Je suis complètement nouveau sur nginx et on me demande de trouver un moyen de servir les tuiles de carte qui sont séparées en fonction des niveaux de zoom. La structure du fichier image est comme ~/data/images/7/65/70.png
où 7 est le niveau de zoom, 65 et 70 sont les valeurs lon-lat. Le dossier 65 contient de nombreux fichiers tels que 71.png, 72.png et etc.
J'ai installé Nginx correctement et je peux obtenir Welcome to nginx
message. J'ai suivi les instructions de http://nginx.org/en/docs/beginners_guide.html
et créé le /data/www
et /data/images
répertoires. J'ai placé le fichier index.html sous /data/www
et des images de tuiles sous /data/images
. J'ai ensuite modifié le fichier de configuration en ajoutant les lignes suivantes dans les balises http:
server {
location / {
root /data/www;
}
location /images/ {
root /data;
}
}
Après avoir rechargé le fichier de configuration et entré localhost sur le navigateur, je ne peux ni obtenir le fichier index.html ni voir les images.
Ce que j'essaie de faire, c'est d'afficher l'image lorsque j'entre quelque chose comme:
http://localhost/1.0.0/basemap/7/65/70.png
Qu'est-ce que je rate?
Ok, laissez-moi vous expliquer quelque chose, vous avez déjà un serveur localhost, qui est défini dans un fichier appelé default
qui est le fichier qui fait apparaître "Welcome to nginx" ou quelque chose, et je pense que vous pouvez ' t créer un nouveau serveur avec le même server_name
, supprimons cela et faisons en sorte que votre hôte local ne diffuse que ces images,
default
de sites-enabled
, il existera toujours à l'intérieur sites-available
si jamais vous voulez le récupérer. (notez que tous les fichiers à l'intérieur de sites-enabled
sont simplement des liens symboliques à partir des fichiers à l'intérieur de sites-available
)sites-available
et appelez-le comme vous voulez, images-app
par exemplecréer le nouveau serveur dans le images-app
fichier, je suppose que la racine de l'application se trouve dans un dossier appelé /data
bien sûr, vous allez associer cela à votre propre structure de serveur.
server {
server_name localhost;
root /data;
index index.html;
location / {
try_files $uri =404;
}
}
maintenant on passe à sites-enabled
et activez ce site que nous avons créé à l'intérieur sites-available
Sudo ln -s /etc/nginx/sites-available/images-app /etc/nginx/sites-enabled/
assurez-vous que toutes les config nginx sont correctes
Sudo nginx -t
Si rien ne va, nous pouvons aller de l'avant et recharger les paramètres nginx
Sudo service nginx reload
Je suis également nouveau sur nginx, voici ma solution qui est similaire à la réponse de Mohammad AbuShady:
sites-enabled/default
whatever.conf
dans /etc/nginx/conf.d/
La raison est:
sites-enabled/default
a défini un serveurqui écoute sur 80 enracinement avec/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
le fichier inclut d'autres fichiers confinclude /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
la 1ère édition de my.conf est root sur/home/scotv /, mais obtiendra une erreur interdite 403, consultez le fichier 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"
Pour mon cas, je viens de modifier /etc/nginx/sites-enabled/default
fichier.
J'ai ajouté la configuration suivante:
location /images/ {
root /data;
}
et placé des images sous /data/images
:
et l'url fonctionne: http: //localhost/images/example.png
J'utilise VS Code comme SuperUser. (Je sais que c'est mauvais, mais j'accepte les risques) Cela aide beaucoup à l'édition des fichiers d'accès root: