Nginx和多个域

时间:2014-05-25 05:20:36

标签: node.js nginx

我在[{1}}(即godaddy.com)为我的mydomain.com(即digitalocean.com)的小滴购买了一些域名。199.216.110.210。我在Droplet上的端口80上运行了一个nodejs应用程序。从godaddy.com开始,我将屏蔽mydomain.com转发到199.216.110.210,我可以看到可能应用。

现在我想在不同端口上的199.216.110.210个节点应用程序上运行,使用ngnix作为反向代理。我按照这里的说明(www.digitalocean.com/community/articles/how-to-host-multiple-node-js-applications-on-a-single-vps-with-nginx-forever-and-crontab)。

我的nginx .conf文件是

 server {
    listen 80;
    server_name mydomain.com;
    location / {
    proxy_pass http://localhost:3000;
    # same as in the link above
    }   
}

(我确信它已被阅读:如果我在那里发出错误,当ngnix启动时,ngnix会报告它。)

我在端口3000上启动nodejs应用程序:

  • 我尝试mydomain.com,但是ngnix始终显示欢迎页面。
  • 同时执行mydomain.com: 3000也不起作用,
  • 仅适用于199.216.110.210:3000

来自godaddy.com,如果我转发屏蔽mydomain.com199.216.110.210:3000,我可以看到可能应用。 但我不喜欢这个解决方案。我希望域指向我的droplet,而不指定端口并使用nginx管理它们。

我如何获得一个用于ngnix的域名作为反向代理来选择我的应用程序,映射到不同端口上的不同域?我认为从godaddy.com转发有点限制。

2 个答案:

答案 0 :(得分:0)

在您的服务器中,转到/var/log/nginx并执行tail -F *log。现在在另一个shell中重新启动nginx。

我怀疑你的域名太长了,nginx会抱怨它的hash_bucket_size太小了。如果是这种情况,请打开/etc/nginx/nginx.conf并确保该行

server_names_hash_bucket_size 64;

存在,值为64并且未注释。然后执行sudo service nginx reload,检查一切是否按预期工作。

答案 1 :(得分:0)

我将逐步详细说明如何在我的aws ec2实例中进行此操作;

  1. 我为我的实例设置了DNS记录,因此我可以将mydomain.com设置为192.168.123.123(我的特定IP)。

  2. 在我的实例中,我一直在端口3000中运行我的node.js应用程序(我通过从命令行发出curl localhost:3000来测试它)

  3. 然后我下载this .sh文件以正确地实例化nginx; curl -o nginxStarter.sh https://gist.githubusercontent.com/renatoargh/dda1fbc854f7957ec7b3/raw/c0bc1a1ec76e50cdb4336182c53a0b222edb6c0e/start.sh

  4. 我使用this configuration file配置nginx。把这个文件放进去; /etc/nginx/nginx.conf

  5. 使用此命令启动nginx; sudo sh nginxStarter.sh start

  6. PS。:对于多个应用程序,只需复制将请求路由到特定端口的行,非常简单......!如果不需要,您可以删除有关SSL的行。