当从链接打开时正常服务但在使用链接时返回404页面未找到

我正在使用 nginx-lua 模块与 redis 来提供 ember-app 的静态文件服务。index 文件内容作为一个 value 存储在 redis 中,当 (root) domain/IP 被点击时,nginx 会正确地提供服务。

如果从链接中打开 'login' 页面,则可以正常打开。但是,当直接点击地址栏或刷新页面时,nginx 就会返回 404 not foundindex 文件在 redis 中,其余文件都可以从编译好的 js 上获取,该 js 存在于一个 CDN 上。 以下是 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)

     ';
 }
点赞
用户3026618
用户3026618

以下 nginx location 块必须被添加,以便从在 redis 中提供的 index 文件中提供子路由。关于此的详细说明和完整的 nginx 配置可以在此处找到 here

 # 这个块处理子请求。如果请求任何子路由,则需要重写 URL 到根,通过将子路由传递给用 redis 提供的 index 文件来尝试呈现子路由页面。
 location ~* / {
   rewrite ^ / last;
 }
2016-06-06 21:55:43