繁体   English   中英

使Nginx在EC2上转为Thin

[英]Getting Nginx to forward to Thin on EC2

我正在努力让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细根923 1 2 16:06? 00:00:09瘦服务器(0.0.0.0:3000)
根934 1 1 16:06? 00:00:09瘦服务器(0.0.0.0:3001)
根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 545542 0 16:04? 00:00:00 nginx:工作进程


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

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

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

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没有人:没人/ etc / nginx / sites-enabled / dankit

我倾向于只使用符号链接的完整路径……也许这是一个好习惯,但是我还发现,如果未正确为已启用的站点配置权限,nginx不会感到满意。

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

查看此URL http://articles.slicehost.com/2008/5/27/ubuntu-hardy-nginx-rails-and-thin和您的配置完全匹配,我认为没有任何问题,尽管我想您验证一些事情。

请验证以下内容:

  1. 更改瘦地址以指向127.0.0.1
  2. 确保防火墙的瘦端口号为OPEN,TCP连接的防火墙号为80。 不是通过查看亚马逊控制台而是通过运行iptables命令。
  3. 最后,请确保您的公共DNS是CORRECT

排序。

任何可以回答为什么符号链接是问题的人都可以得到答案!

感谢您的所有反馈和帮助。 基本上,如果有人遇到这个问题,这就是问题所在。

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

..OK听起来不错!

现在我注意到,当我重新符号链接从/ etc / nginx / site-available到/ etc / nginx / site-enabled的配置时,它没有任何作用。 甚至默认的nginx默认配置也不起作用。

所以! symlink在这里一定有问题。 我通过将/ etc / nginx / site-available / dankit导入到主要的Nginx配置中进行了快速测试,嘿! 网站启动。

因此,我相信我的symlink命令:

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

是胡扯。 我要研究另一种解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM