nginx:在eval块

时间:2016-10-24 14:03:21

标签: nginx memcached eval proxypass

我试图从memcached服务器获取自定义URL,使用eval模块将其分配给变量并告诉nginx重写请求。 我的配置文件包含在默认nginx.conf的http部分中,并具有以下代码:

map $request_uri $instanceId {    
    "~/instance1" "instance1"; #"http://127.0.0.1:8088";
    "~/instance2" "instance2"; #"http://127.0.0.1:8089";
}
log_format myVariable '{"evaluation_response" : "$proxyUrl", "for instance" : "$instanceId"}';
log_format redirectUrl '{"redirect" : "$proxyUrl/$relative_request_uri?$query_string"}';
server {    
    listen 8058;    
    server_name "memcahed.test.com";    
    location ~(?:\/instance\d)?\/(?<relative_request_uri>(?:\w*\W*)*){
        eval_override_content_type text/plain;        
        eval_escalate on;        
        eval $proxyUrl {            
            if ($instanceId = '') {                
                return 502;
            }            
            set $memcached_key $instanceId;            
            memcached_pass 127.0.0.1:11211;       
        }                   
        #access_log /home/Vlad/myAccess.log myVariable;        
        proxy_pass "$proxyUrl/$relative_request_uri?$query_string";
        #access_log /home/Vlad/myAccess.log redirectUrl;    
    }
}

server {        
    listen 8088;
    listen   [::]:8088;        
    server_name   "i1.test.com";        
    root /var/www/test.com/html;        
    index index.html index.htm;        
    location / {                
        try_files $uri /index.html;        
    }
}
server {        
    listen 8089;        
    listen   [::]:8089;        
    server_name   "i2.test.com";        
    root /var/www/test2.com/html;        
    index index.html index.htm;        
    location / {                
            try_files $uri /index.html;        
    }
}

服务器是伪造的,用于提供静态文件 - 我没有真正的文件。当我启用日志记录时 - 我看到正确的输出:

{"evaluation_response" : "http://127.0.0.1:8088", "for instance" : "instance1"}
{"redirect" : "http://127.0.0.1:8088/?-"}
{"evaluation_response" : "http://127.0.0.1:8089", "for instance" : "instance2"}
{"redirect" : "http://127.0.0.1:8089/?-"}

但页面从不加载(Chrome消息):

  

:: IP :: page无效:: IP ::没有发送任何数据。   ERR_EMPTY_RESPONSE

error.log不包含任何有用的信息(输出级别 - 调试),但如果您需要它,我可以为一个请求提供副本。 我的配置有什么问题?

0 个答案:

没有答案