最简单的反向代理

举报
张俭 发表于 2023/12/29 15:39:51 2023/12/29
【摘要】 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://...
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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。