Ruby on rails 3 nginx(+;乘客)不';t似乎在端口80上运行

Ruby on rails 3 nginx(+;乘客)不';t似乎在端口80上运行,ruby-on-rails-3,macos,nginx,passenger,homebrew,Ruby On Rails 3,Macos,Nginx,Passenger,Homebrew,我已经在我的用户帐户上安装了nginx(通过自制)。几个小时以来,我一直认为这件事行不通,因为我无法让任何Rails3应用程序对简单的nginx声明的位置做出响应。经过深思熟虑(又名尝试和错误),我得出结论,它确实有效,但拒绝使用端口80 我知道,homebrew安装是每个用户的安装,因此它不应该只能在根端口(即端口1024及以下)上运行,但是homebrew本身(以及网络上的各种来源)表明,只需通过sudo nginx运行服务器就足以允许它使用端口80 以下是配置的重要文件,这些文件可以工作:

我已经在我的用户帐户上安装了nginx(通过自制)。几个小时以来,我一直认为这件事行不通,因为我无法让任何Rails3应用程序对简单的nginx声明的位置做出响应。经过深思熟虑(又名尝试和错误),我得出结论,它确实有效,但拒绝使用端口80

我知道,homebrew安装是每个用户的安装,因此它不应该只能在根端口(即端口1024及以下)上运行,但是homebrew本身(以及网络上的各种来源)表明,只需通过
sudo nginx
运行服务器就足以允许它使用端口80

以下是配置的重要文件,这些文件可以工作:

/etc/主机: /usr/local/etc/nginx/nginx.conf: 当我将应用程序的服务器端口更改为
80
时,我自然会在重新启动时收到:


nginx:[emerg]bind()到0.0.0.0:80失败(13:权限被拒绝)

…但是当I
sudo
it时,错误不会显示,进程将以
root
作为其所有者开始。但是打开
http://doomhub.local
在浏览器中不返回任何内容(从技术上讲,这是一个“浏览器无法解析地址”错误,但我没有收到其他错误,没有nginx错误)。我没有日志,什么都没有

当我将侦听端口更改回8080(或其他任何端口)时,当我作为普通用户运行它时,它就像一个符咒一样工作。。。但是我真的想用
http://doomhub.local
而不是
http://doomhub.local:8080

是否有任何东西会阻止OSX应用程序在端口80上监听,而我却没有?正如您所看到的,我可以使用它,因此没有其他过程。它就是不听任何东西

有没有办法将浏览器中的
8080
视为“普通”http端口

编辑: 按照建议指定乘客用户并没有解决我的问题,过了一段时间,我最终为乘客创建了rvm包装(而不是允许它使用清晰的ruby二进制文件),如这篇文章所述:

由于创建了一个仅限乘客/捆绑机的rvm包装器,当我以根用户身份启动nginx时,我成功地运行了应用程序。我可以同时指定root-only和用户允许的监听端口(即,我测试了8080和81),即使所有与包装器二进制文件无关的gem,应用程序也可以正常运行。然而


…但我在端口80上仍然一无所获。

我认为作为根本原因运行会导致权限问题,导致应用程序无法工作。您是否已将
passengerswitch
选项与
PassengerUser
PassengerGroup
一起尝试过


编辑:错过了“无法解析地址”错误。仍然可以尝试上面的方法(乘客有时会觉得奇怪),但也可以尝试运行netstat以查看端口绑定是否正确

我认为作为根本原因运行会导致权限问题,导致应用程序无法运行。您是否已将
passengerswitch
选项与
PassengerUser
PassengerGroup
一起尝试过

编辑:错过了“无法解析地址”错误。仍然可以尝试上面的方法(乘客有时会觉得奇怪),但也可以尝试运行netstat以查看端口绑定是否正确

正确诊断 哈! 我完全忘了我的系统上安装了pow。我知道在我开始玩nginx之前,我已经完全禁用了它,但这还不够。您可能知道,pow是一个零配置服务器工具,可以自动创建本地主机域-这也意味着它。。。“适当”端口80,您可以在键入以下内容时看到:


sudo-ipfw列表

这将返回类似于:

00100 fwd 127.0.0.1,20559 tcp from any to me dst-port 80 in
65535 allow ip from any to any
…这清楚地表明端口80上的任何ip连接都被转发到20559(pow的端口)

解决方案 我们现在要做的是删除此端口-80转发信息,并在其位置使用其他端口。这将使我们能够轻松地为多个rails应用程序托管开发服务器(每个应用程序都有自己的gemset和配置),并通过乘客的上游代理它们

。在我看来,仅仅手动更改ipfw条目就足够了,但我还是选择了博客条目。如果执行此操作,请确保使用适当的pow安装/卸载脚本;例如,在安装脚本成功编译之前,我必须完全取消-安装pow

正确诊断 哈! 我完全忘了我的系统上安装了pow。我知道在我开始玩nginx之前,我已经完全禁用了它,但这还不够。您可能知道,pow是一个零配置服务器工具,可以自动创建本地主机域-这也意味着它。。。“适当”端口80,您可以在键入以下内容时看到:


sudo-ipfw列表

这将返回类似于:

00100 fwd 127.0.0.1,20559 tcp from any to me dst-port 80 in
65535 allow ip from any to any
…这清楚地表明端口80上的任何ip连接都被转发到20559(pow的端口)

解决方案 我们现在要做的是删除此端口-80转发信息,并在其位置使用其他端口。这将使我们能够轻松地为多个rails应用程序托管开发服务器(每个应用程序都有自己的gemset和配置),并通过乘客的上游代理它们

。在我看来,仅仅手动更改ipfw条目就足够了,但我还是选择了博客条目。如果你这样做-麦
00100 fwd 127.0.0.1,20559 tcp from any to me dst-port 80 in
65535 allow ip from any to any