2010-03-27 76 views
1

如何配置nginx的負載靜態? 靜態只能由nginx的服務器,一切的nginx + dev_appserver給予和workingon同一主機(本地主機或本地主機:端口)Nginx前端爲AppEngine dev服務器

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

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

回答

1

最好是定義一個規則來做到這一點與測試ID $ REQUEST_FILENAME存在或者不在你的文件系統中使用-f測試。這樣

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; 
      } 
} 
0

有什麼意義?您將無法在生產環境中將您的應用程序部署到nginx - GAE不允許它。那麼爲什麼在當地的發展過程中爲此煩惱呢?

+0

有趣的一點 - 我在看這個報道http://www.radomirml.com/blog/2011/01/30/reverse-proxy-for-gae-application-using-nginx-and-ssl/和它表明可以在GAE前面放置一個前端nginx反向代理?你能提供任何見解嗎? (我意識到你的觀點是在該博客文章發佈一年之前完成的,所以事情可能改變了?) – 2013-08-21 17:34:24

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會重定向到該位置。