当网址被点击时,找不到404页面,但是当从索引页面上的链接打开时正确提供了该页面

时间:2016-05-27 09:54:23

标签: nginx ember.js lua

我正在使用nginx-lua模块和redis来提供ember-app的静态文件。 index文件内容作为redis存储在value中,nginx在(根)domain/IP被点击时正确提供。

如果从链接打开login页面,则会正确打开。但是当通过点击url栏或刷新页面直接打开时,nginx会给出404 not foundindex文件位于redis,其余文件由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)

     ';
 }

1 个答案:

答案 0 :(得分:4)

必须添加以下nginx位置块才能从redis提供的索引文件中提供子路由。可以找到详细说明和完整的nginx配置here

for abc in test:

    path = "s3a://abc/processing/test/raghu/*/"+abc+"/*"

    push = sqlContext.read.json(path)

    push.registerTempTable("push")

    final = sqlContext.sql("SELECT unbase64(body.payload) as payload,"abc" as app-name from push")

    final.write.parquet("/data/test/dev/raghu/SPARK-Test/")