最简单的反向代理

2017-09-11  本文已影响66人  ShootHzj
http {
  upstream rails_app {
    server 127.0.0.1:3000; //exactly what WEBrick listens
  }
  
  server {
    listen *:80;
    root /path/to/application/public;
    
    location / {
      proxy_paas http://rails_app;
    }
  }
}

这个配置文件接受80端口的请求,然后转发给3000端口,你已经把nginx至于WEBrick之前了。
上面的配置还有一点不太合理,location会把所有的请求发送给WEBrick。
我们希望把静态资源交给nginx处理,其他的资源交给WEBrick处理。

server {
  listen *:80;
  root /path/to/application/public;

  location / {
    proxy_pass http://rails_app;
  }
  location /assets {
  }
}

我们用一个新的location块拦截 /assets前缀
一个小提示,静态资源的存储往往有着HTTP缓存的头部。你可以这样完成

location /assets {
  expires max;
  add_header Cache-Control public;
}

expire指令设置了过期和缓存控制。值可以是一个确切的日期,相对的时间,或者常数的最大值。当你设置为最大值时,nginx把Expires设置为"Thu, 31 Dec 2037 23:55:55 GMT",缓存控制设置为10年。

尽管expire指令为我们设置了Cache-Control,我们依然需要一点点调整。默认情况下,Cache-Control把内容设置为私有的,但是既然assets一般来说是公共的,由所有用户共享, 可以把Cache-Control设置为public。
如果你向/assets目录下发送一条web请求,你可以看到回应的http头部有

$curl -I 127.0.0.1/assets/test.jpg
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
Cache-Control: public
上一篇下一篇

猜你喜欢

热点阅读