Le site est presque entièrement contenu dans un fichier HTML. Tous les autres fichiers peuvent être des images, css ou javascripts et éventuellement des fichiers json.
server { listen 80; server_name git.vosnax.ru; location / { try_files $uri "/index.html"; root /home/sybiam/prod/blog; index index.html; } }
C’est ma configuration actuelle, mais ce n’est pas parfait. Il redirecta toutes les requêtes vers index.html sauf si le fichier existe, ce qui est correct.
Maintenant, je voudrais append une certaine persistance au site. Comme pour sauvegarder et charger les jsons depuis un serveur avec une authentification très simple, cela prend en charge GET et POST. Ce qui signifie que je ne peux pas utiliser JSONP
.
La question est seulement de savoir comment configurer nginx pour transférer toutes les demandes de laisser dire /api/*
à mon serveur web pyramidal et tout le rest à index.html sauf si le fichier existe.
Je pourrais probablement héberger le serveur sur un domaine différent pour faciliter les choses, mais je ne sais pas comment gérer les requêtes crossdomain. CORS
n’est pas pris en charge sur l’ancien IE.
EDIT: Apparemment, les arguments de la requête étaient toujours disponibles, donc ce n’est plus un problème. Mon javascript remplaçait le chemin d’access au chargement et supprimait le window.location.search
.
tout le rest à index.html à moins que les fichiers existent est le bit try_files
vous avez dans votre location /
-block déjà
pour ne transmettre que les requêtes /api/*
à votre autre serveur, vous ajoutez les éléments suivants à votre bloc serveur (en tant que frère de votre location /
-block):
location /api/ { proxy_pass http://address_of_server_your_passing_to; }
voir la documentation si vous souhaitez plus d’informations sur la correspondance d’une requête lorsqu’il y a plusieurs blocs d’emplacement