我正在运行带有三个 Apache 虚拟主机的 Ubuntu 10.10。我刚刚关注本教程介绍如何使用 PAssenger 和 nginx 在 Ubuntu 上设置 Rails 3。
除 rails/nginx 外,其他一切都运行良好。当我尝试启动它时,收到以下消息:
* Starting Nginx Server...
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
...done.
不确定问题是什么。我必须使用 nginx 而不是 apache 吗?我现在只是个新手,所以如果任何答案考虑到这一点,我将不胜感激。
编辑
apache2ctl -S
输出如下:
default server pixelcraftwebdesign.com (/etc/apache2/httpd.conf:4)
port 80 namevhost pixelcraftwebdesign.com (/etc/apache2/httpd.conf:4)
port 80 namevhost opsandss.com (/etc/apache2/httpd.conf:8)
port 80 namevhost ergo-metric.com (/etc/apache2/httpd.conf:16)
port 80 namevhost admin.nflspot.com (/etc/apache2/httpd.conf:24)
port 80 namevhost utcmeme.com (/etc/apache2/httpd.conf:29)
port 80 namevhost ruby.pixelcraftwebdesign.com (/etc/apache2/httpd.conf:37)
wildcard NameVirtualHosts and _default_ servers:
*:* is a NameVirtualHost
default server myServer (/etc/apache2/sites-enabled/000-default:1)
port * namevhost myServer (/etc/apache2/sites-enabled/000-default:1)
port 443 namevhost myServer (/etc/apache2/sites-enabled/default-ssl:2)
答案1
配置 Apache 将 Ruby 域的请求转发到 nginx,现在 nginx 正在监听端口 8000。
确保你有一个NameVirtualHost *:80
地方(你可能在 中有/etc/apache2/ports.conf
,因为你在 Apache 上有两个站点)。并启用 mod_proxy(a2enmod proxy
)。然后添加此配置作为新的 vhost:
<VirtualHost *:80>
ServerName ruby.website1.com
ServerAlias website3.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>
答案2
您的 Apache 占用了端口 80。如果您不移动/重命名 Nginx“site-enabled/default”配置文件(最近在 1.0+ 中引入),Nginx 无论如何都会尝试在端口 80 上启动 - 即使您为 Nginx 指定了不同的监听端口。
移动/重命名文件,并在“nginx.conf”中使用“listen”指令指示不同的端口。