如何在一台服务器上托管多个应用程序并将多个域指向它们?

如何在一台服务器上托管多个应用程序并将多个域指向它们?

我正在努力弄清楚一些事情,但我很困惑。我知道一些事情,但还不够。

我知道域名实际上指向服务器的 IP 地址。所以如果我想拥有两个应用程序,它们都必须指向同一台服务器。例如:

域名1.com => 139.130.4.5

域名2.com => 139.130.4.5

我必须将它们都配置为指向同一个 IP 地址吗?对吗?

它们都默认使用 80 端口,对吧(139.130.4.5:80)?服务器如何知道要为哪个应用程序提供服务?

假设我在 Debian 上有这两个应用程序:

127.0.0.1:3000

127.0.0.1:4000

NGINX 在端口 80 上接受请求,并以某种方式决定为哪个端口提供服务。这一切是如何运作的?

我首先想到的是,您必须配置域以指向:

domain1.com => 139.130.4.5:3000

domain2.com => 139.130.4.5:4000

但它不是那样工作的,如果不是那样,怎么办?:)

谢谢!

答案1

这称为基于名称的虚拟主机。Nginx 将根据请求的 FQDN 为网站提供服务。

答案2

这当然可以利用虚拟主机来完成。Domain1.com 可以使用原始 Web 根文件夹和 vhost 文件。如果您不想这样做,可以对 domain1 和 domain 2 重复以下步骤。`

步骤(ubuntu 14.04):

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com

sudo nano /etc/nginx/sites-available/domain2.com
  • 取消注释 listen 80,这样通过的流量将被连接

  • 更改 Web 根目录

  • 更改域名以匹配您的其他域名

接下来,从可用的虚拟主机到已启用的虚拟主机创建一个链接。

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

重启 nginx

sudo service nginx restart

这样,一个 IP 就可以服务于许多不同的网站,由于 IPv4 空间不足和 V6 的部署成本高昂,几乎所有共享网络托管提供商都执行此做法。服务器将从以下块中知道要为客户端提供哪个应用程序:

server_name example.com;

至于您的其他建议,是的,可以这样做。

一个例子如下所示

server {
     listen   80; ## IPv4, change this port!

我不是 nginx 专家(Apache 爱好者),希望这篇文章对你有帮助

答案3

我在新安装的 nginx 上从头开始遵循这个协议,并且它对我有用。 https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-14-04-lts

相关内容