让Nginx在EC2上转发为Thin

时间:2011-06-15 16:52:09

标签: ruby-on-rails ubuntu amazon-ec2 nginx thin

我很难让Nginx将我的80个流量代理到我的瘦群集上。

此刻......没有任何反应。见http://ec2-50-19-75-170.compute-1.amazonaws.com/

请参阅下面的配置文件:

我的 etc / nginx / sites-enabled / dankit 配置文件看起来像这样

upstream thin {
     server 0.0.0.0:3000;
     server 0.0.0.0:3001;
     server 0.0.0.0:3002;
}

server {
    listen 80;
    server_name ec2-50-19-174-64.compute-1.amazonaws.com;

    root /home/ubuntu/apps/dankit-rails;

    location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect false;

      if (-f $request_filename/index.html) {
        rewrite (.*) $1/index.html break;
      }
      if (-f $request_filename.html) {
        rewrite (.*) $1.html break;
      }
      if (!-f $request_filename) {
        proxy_pass http://thin;
        break;
      }
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
      root html;
    }
}
然后我跑了: sudo ln -s sites-available / dankit sites-enabled / dankit

/etc/thin/dankit.yml

pid: tmp/pids/thin.pid
address: 0.0.0.0
timeout: 30
port: 3000
log: log/thin.log
max_conns: 1024
require: []

max_persistent_conns: 512
environment: production
servers: 3
daemonize: true
chdir: /home/ubuntu/apps/dankit-rails

并确认两者都在运行:

ubuntu @ domU-12-31-39-06-7A-F8:/ etc / nginx / sites-available $ ps -ef | grep -i thin 根923 1 2 16:06? 00:00:09瘦服务器(0.0.0.0:3000)
root 934 1 1 16:06? 00:00:09瘦服务器(0.0.0.0:3001)
root 945 1 1 16:06? 00:00:08瘦服务器(0.0.0.0:3002)
ubuntu 971 817 0 16:14 pts / 0 00:00:00 grep -i thin ubuntu @ domU-12-31-39-06-7A-F8:/ etc / nginx / sites-available $ ps -ef | grep -i nginx 根542 1 0 16:04? 00:00:00 nginx:主进程/ usr / sbin / nginx www-data 545 542 0 16:04? 00:00:00 nginx:工人流程


我的瘦服务器启动正常,rails目录中的日志没有显示任何错误。

我开始认为这是ec2安全组的安全问题。但是,我已经为0.0.0.0/0 3000-3030添加了TCP,通常是:80和ssh。

这让我很精神!任何建议都将不胜感激。

4 个答案:

答案 0 :(得分:1)

I then ran: sudo ln -s sites-available/dankit sites-enabled/dankit

问题可能是以下两种情况之一:

  1. ln -s / etc / nginx / sites-available / dankit / etc / nginx / sites-enabled / dankit
  2. chown nobody:nobody / etc / nginx / sites-enabled / dankit
  3. 我倾向于只使用符号链接的完整路径...也许这只是一个好习惯,但我也发现如果没有为启用的网站配置权限,nginx不满意。

答案 1 :(得分:0)

或许将所有0.0.0.0更改为127.0.0.1或将localhost更改为127.0.0.1。 0.0.0.0和127.0.0.1之间的区别在于前者是指localhost的物理接口,而后者是指软件接口。

答案 2 :(得分:0)

查看此网址http://articles.slicehost.com/2008/5/27/ubuntu-hardy-nginx-rails-and-thin&你的配置匹配完美,我没有想到任何问题,但我希望你验证一些事情。

请验证以下内容:

  1. 将精简地址更改为指向127.0.0.1
  2. 确保防火墙的端口号为thin& amp; 80用于TCP连接。不是通过查看亚马逊控制台,而是通过运行iptables命令。
  3. 最后,请确保您的公开dns为CORRECT

答案 3 :(得分:0)

对它进行排序。

任何能够解答为什么符号链接出现问题的人都可以得到答案!

感谢所有的反馈和帮助。基本上如果有其他人遇到这个问题......这就是它的原因。

我注意到当我从/ etc / nginx / site-enabled中删除配置时,它影响了服务器。

..听起来不错!

现在我注意到当我重新sym将/ etc / nginx / site-available中的配置链接到/ etc / nginx / site-enabled时它没有任何效果。即使是默认的nginx默认配置也不起作用。

所以! symlink一定存在问题。我通过将/ etc / nginx / site-available / dankit导入主Nginx配置进行了快速测试,嘿!网站正在运行。

因此我相信我的符号链接命令:

sudo ln -s sites-available/dankit sites-enabled/dankit

是僵尸。我得研究另一种解决方案。