2016-05-27 1 views
6

Ich verwende nginx-lua Modul mit redis statische Dateien von ember-app dienen. Der index Dateiinhalt wird in redis als value gespeichert, das ordnungsgemäß von nginx bedient wird, wenn das (Stamm) domain/IP erreicht wird.404-Seite nicht gefunden, wenn eine URL getroffen wird, aber ordnungsgemäß beim Öffnen von der Verknüpfung auf der Indexseite

Wenn login Seite von Link geöffnet ist, wird es ordnungsgemäß geöffnet. Aber wenn sie direkt durch Drücken der URL-Leiste oder Aktualisieren der Seite geöffnet wird, gibt das Nginx 404 not found. Die index Datei befindet sich in redis und der Rest der Dateien wird von kompilierten js geliefert, die auf einem CDN vorhanden ist. Folgende ist die Konfiguration 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) 

    '; 
} 
+0

Verwendet man Post und die andere bekommen, während der Server nur auf einen antwortet? – Randy

+0

@randy Nein, das sind nur GET-Anfragen. Wie 'mydomain/login' wenn es über einen Link von der' index' Seite geöffnet wird, wird es richtig bedient. Wenn sie jedoch durch Klicken auf die URL-Leiste oder durch Aktualisieren der Seite geöffnet wird, wird "404-Seite nicht gefunden" angezeigt –

Antwort

4

Nach nginx Lage Block hat, um zu addieren, die aus SubRoutes Indexdatei zu dienen wird aus redis serviert. Eine detaillierte Erklärung und vollständige nginx-Konfiguration finden Sie here.

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