Nginx Nginx 和 Thin

huzhennan5793 · 2014年03月14日 · 最后由 freedom_fish 回复于 2014年09月25日 · 6056 次阅读

在服务器上安装了 nginx,配置、启动了 nginx,就能访问项目的页面了。这时候 thin 服务要开启吗?求解答

要。

nginx 一般只作为代理服务器,是前端;thin 是后端服务器。 比如你运行 4 个 thin,打开 4000-4004 4 个端口,nginx 打开 80 端口,把访问 80 的请求随机转发到那 4 个端口上去。

关键你 rails 想以什么 rack server 启动,如果你没用 thin,而又可以访问的了 rails 的动态页面,那么你可定已默认的 rails server 启动了,

#1 楼 @windwiny 能解释下 nginx 与 thin 或其他后端(内容服务器)的交互点在哪吗?tks

流程是 Browser -> Nginx -> Thin -> Rails

#4 楼 @swordray 恩,我理解的过程是 nginx 到 thin,可我发现我不配 thin,只配了 nginx,也能访问到页面,我就不解了。。。求解释下 Nginx 到 thin,tks

举例就是 nginx 是一根粗水管,rails 自带 server 是一根细水管,你现在前面接的粗水管接上后面根细水管,所以最后的出水量不会很大

如果用了 thin 的话,前面接的粗水管(nginx)接上后面根粗水管(thin),这样出水量就会大很多

#6 楼 @kidult 意思是 nginx 会自动调用 thin or WEBrick???

#7 楼 @huzhennan5793 水管怎么装配是看你自己决定的,水管本身不会帮你挑水管。。。。

#6 楼 @kidult 刚看了下,确实应该是自动调了,在项目目录 log 里有记录,求解释下 nginx 到 thin or WEBrick 的过程

#8 楼 @kidult 我想知道这水管在哪里接的头。。

#10 楼 @huzhennan5793 nginx 配置文件,不明你可以贴出来看看

http://ruby-china.org/wiki/install-rails-on-ubuntu-12-04-serverpassenger安装了nginx,配置也差不多就是上述文章里说的那样,这里面的步骤使用 server { listen 80; server_name you.host.name; # 请替换成你网站的域名 rails_env production; root /home/jason/www/gitlab/public; passenger_enabled on;

location ~ ^(/assets) { access_log off; # 设置 assets 下面的浏览器缓存时间为最大值(由于 Rails Assets Pipline 的文件名是根据文件修改产生的 MD5 digest 文件名,所以此处可以放心开启) expires max; }

**不懂的是 1、没有配置 thin 或其实内容服务器,直接能通过 you.host.name 访问到服务器,项目 log 目录下也生成了访问日志,OK,我理解成 nginx 会自动启动 WEBrick/Thin。可如果他会自动启动 WEBrick/Thin,那么还要启动 thin 吗???**

#12 楼 @huzhennan5793 你如果根据教程做的话,已经用了 Passenger

扩展阅读:http://ihower.tw/rails3/deployment.html

nginx 作为反向代理,在接收到 web 请求时作为请求的代理向 thin 分发 http 请求,在 thin 处理完毕后把结果返回给 nginx,nginx 再作为响应的代理把 thin 的请求返回给发起请求的客户端

#13 楼 @kidult #14 楼 @dddd1919 多谢各位,原理我想应该就这样,我再深入看看,tks

#13 楼 @kidult 我有罪啊@_@,多谢了,终于明白了,原来 passenger 和 thin 是一个级别的,nginx 把请求发给了 passenger

#5 楼 @huzhennan5793 Nginx 是提供静态文件和转发动态请求到 Rails,参考配置 https://gist.github.com/swordray/8882089

#1 楼 @windwiny 4000~4004 到底是几个端口?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号