【问题标题】:Run NodeJs and Apache together with two separated domain将 NodeJs 和 Apache 与两个独立的域一起运行
【发布时间】:2018-10-01 10:49:11
【问题描述】:

我有一个带有两个域和两个 Web 应用程序的 Linux 服务器 (VPS),其中一个使用 NodeJS(聊天应用程序)编程,而另一个是 PHP

所以,我想做的是在同一台服务器上的不同域中运行这两个应用程序。我尝试了很多方法来做到这一点,但所有这些方法都适用于单域和多 URL 路径,例如:https://example.com & https://example.com/node

但我想要的是这样的:https://nodeappexample.com & https://apacheappexample.com

问候

【问题讨论】:

  • 您需要虚拟主机,每个域一个。您将遇到的问题是,由于它们都是 https,因此您必须对 SSL 部分使用 SNI(对此进行研究)。如果您不能使用 SNI,则必须为每个域使用 1 个 IP,以便在两个域之间进行 SSL 拆分。

标签: php node.js linux apache vps


【解决方案1】:

如果您在 DigitalOcean 或任何其他服务器等专用或 VPS 上,并计划在单个服务器上托管多个网站,那么您可以使用 Apache HTTP 或 Nginx Web 服务器来实现。

这假设您已经将 DNS 映射到您的主机,例如我已映射到 DigitalOcean 的两个域。

bestflare.com
usefulread.com

在您实施此之前,让您了解它是如何工作的。在单个实例上拥有多个网站的概念称为虚拟服务器。虚拟服务器配置在 Web 服务器配置中定义,并根据服务器/IP 地址,将请求转发到相应的文档根目录。

在 Apache 中配置虚拟主机以托管多个域 登录到 Apache HTTP 服务器 转到 apache conf 位置。 (在默认安装中 - 您可以在 /etc/httpd/conf/httpd.conf 中找到它) 备份 httpd.conf 文件 像下面这样为两个域创建一个 VirtualHost 容器。

<VirtualHost *:80>
ServerAdmin hello@chandank.com
   DocumentRoot /opt/htdocs/bestflare
   ServerName bestflare.com
   ErrorLog logs/bestflare.com-error_log
   CustomLog logs/bestflare.com-access_log common
</VirtualHost>
<VirtualHost *:80>
   ServerAdmin hello@chandank.com
   DocumentRoot /opt/htdocs/usefulread
   ServerName usefulread.com
   ErrorLog logs/usefulread.com-error_log
   CustomLog logs/usefulread.com-access_log common
</VirtualHost>

注意:根据您的要求更改 ServerAdmin、DocumentRoot、ServerName、ErrorLog、CustomLog 的值。

重新启动 Apache HTTP 并测试两个 url。

在 Nginx 中配置虚拟主机以托管多个域 登录 Nginx 服务器 转到 virtual.conf 位置(在默认位置 - 你会在 /etc/nginx/conf.d/virtual.conf 找到它) 备份 virtual.conf 为两个 URL 创建服务器块,如下所示。

server {
listen 80;
   root /opt/htdocs/bestflare;
index index.html index.htm;
   server_name bestflare.com;
   location / {
       try_files $uri $uri/ =404;
   }
}
server {
   listen 80;
   root /opt/htdocs/usefulread;
   index index.html index.htm;
   server_name usefulread.com;
   location / {
       try_files $uri $uri/ =404;
   }
}

注意:根据您的要求更改 root、server_name 的值。

重启 Nginx 并测试两个 URL 这是在单个 Web 服务器实例(如 Apache 或 Nginx)中托管多个域的快速指南。网站上线后,别忘了针对安全漏洞进行测试。

【讨论】:

  • 感谢您的回答,我想问您一些问题:DocumentRoot是应用程序的位置吗?那么 NodeJS 呢?
  • DocumentRoot /var/www/site ServerName example.com // 用于文档根目录
  • ServerName node.example.com ProxyPass / localhost:8000 connectiontimeout=5 timeout=30 #可选超时设置 //可以使用代理服务器对于 Nodejs
  • @MohammadRaheem 我找不到这个文件/etc/httpd/conf/httpd.conf !! (在 debian 9 上工作)
  • /etc/apache2/apache2.conf --- Debian 将其 Apache 2.0 配置文件存储在目录 /etc/apache2 中。通常主要的 Apache 配置文件称为 httpd.conf。
猜你喜欢
  • 2018-05-14
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 2010-09-13
相关资源
最近更新 更多