最简单的反向代理

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,465评论 21 356
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 6,313评论 0 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,523评论 19 139
  • 1.简介:  Nginx:engine X ,2002年,开源,商业版 http协议:web服务器(类似于ht...
    尛尛大尹阅读 5,865评论 0 3
  • 文/ 骑马上岸的人 春夏秋冬 枷锁一次次被打开 又被合拢 鸟雀进进出出 他们的巢穴 曾建在我的屋翎之上 谁曾想过要...
    骑马上岸的人阅读 3,038评论 3 5