404 page introuvable lorsqu’une URL est atteinte mais correctement diffusée lorsqu’elle est ouverte depuis le lien sur la page d’index

J’utilise le module nginx-lua avec redis pour servir des fichiers statiques de ember-app . Le contenu du fichier d’ index est stocké dans redis sous la forme d’une value correctement servie par nginx lorsque le domain/IP (racine) est atteint.

Si la page de login est ouverte depuis le lien, elle s’ouvre correctement. Mais lorsqu’il est ouvert directement en appuyant sur la barre d’URL ou en rafraîchissant la page, le nginx donne 404 not found . Le fichier d’ index est dans redis et le rest des fichiers est servi à partir de js compilés qui est présent sur un CDN . Voici la configuration de nginx

 server { listen 80 ; server_name 52.74.57.154; root /; default_type text/html; location = / { try_files $uri $uri/ /index.html?/$request_uri; set_unescape_uri $key $arg_index_key; set $fullkey 'ember-deploy-cli:index:${key}'; content_by_lua ' local redis = require "resty.redis" local red = redis:new() red:set_timeout(1000) -- 1 sec local ok, err = red:connect("127.0.0.1", 6379) if not ok then ngx.say("failed to connect: ", err) return end if ngx.var.key == "" then --ngx.say("No Argument passed") local res, err = red:get("ember-deploy-cli:index:current-content") ngx.say(res) return end local res, err = red:get(ngx.var.fullkey) if res == ngx.null then ngx.say("Key doesnt exist ") return end ngx.say(res) '; } 

Le bloc nginx d’emplacement suivant doit être ajouté afin de servir les sous-routages du fichier d’index fourni par redis. Une explication détaillée et une configuration complète de nginx peuvent être trouvées ici .

  # This block handles the subrequest. If any subroutes are requested than this rewrite the url to root and sortinges to render the subroute page by passing the subroute to index file (which is served by the redis). location ~* / { rewrite ^ / last; }