AppEngine开发服务器的Nginx前端

时间:2010-03-27 21:16:19

标签: google-app-engine caching nginx

如何为负载静态配置nginx? 静态应该只由nginx服务器给出,其他一切都是nginx + dev_appserver并且在同一个主机上工作(localhost或localhost:port)

Example
    request html
    http://localhost -> nginx -> dev_appserver

    request static files 
    http://localhost/static/css (js,img,etc) -> nginx

3 个答案:

答案 0 :(得分:1)

最好的是使用-f test在您的文件系统中定义使用测试id $ request_filename存在与否的规则。像那样

if (-f $request_filename)

例子可以是那样的

upstream my_server {
        server 127.0.0.1:44000;
        server 127.0.0.1:44001;
}
server {
        listen      80;

            if (-f $request_filename) {
                expires      max;
                break;
            }
            if (!-f $request_filename){ 
                proxy_pass  http://my_server;
            }
}

答案 1 :(得分:1)

Nginx作者Igor Sysoev强烈建议不要使用if,尤其是测试文件存在。为了提供一些方法来实现这种任务,他引入了try_files指令

server {
  listen 80;

  root /var/your/gae/project/root;

  location / {
    try_files $uri @gae;
  }

  location @gae {
    proxy_pass http://gae;
  }
}

try_files的参数是文件模式列表(您可以使用变量,如我们的示例中所示)来测试存在(例如,您可以依次测试$uri $uri.html $uri.htm),最后一个参数是命名位置如果找不到现有文件,Nginx会重定向。

答案 2 :(得分:0)

重点是什么?您将无法在生产中使用您的应用部署nginx - GAE不允许它。那么为什么在本地开发过程中会烦恼呢?