我正在努力弄清楚一些事情,但我很困惑。我知道一些事情,但还不够。
我知道域名实际上指向服务器的 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