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