Apache 和 Yeoman 在同一台服务器上构建了 NodeJS 应用程序……虚拟主机?
Apache and Yeoman built NodeJS app on the Same Server... Virtual Hosts?
我一直在尝试在我的 apache 服务器上添加一个 NodeJS 应用程序(由 Yeoman - angular-fullstack 生成器构建)。
我找到了另一个已回答的问题:Apache and Node.js on the Same Server
建议像这样使用 ProxyPass :
ProxyPass /node http://localhost:8000/
我这样做时遇到的问题是我的应用程序在 index.html 上启动,其中包含一些带有 href 的文件。
因为这些 hrefs 不是这样开始的
href="/node/..."
它们不会被 Proxypass 重定向,因此会导致 404 错误。
我不能只更改所有 href:这意味着我需要在我的 3 环境中重新做一遍:开发、生产和测试,即使我这样做了,每次我都会使用 Grunt为了测试我的应用程序,它无论如何都会自动重建我的 index.html。 (此外,它并没有解决所有问题,我这样做时出现了socketio的一些问题)
那时我唯一能做的就是像这样使用 ProxyPass :
ProxyPass / http://localhost:8000/
它确实有效,绝对没问题,就像我实际上是在本地主机上从我的服务器上使用该应用程序一样。
唯一剩下的问题是我的服务器上需要有 2 个环境,一个用于生产环境,一个用于测试环境,但我做不到
ProxyPass / http://localhost:8000/
ProxyPass / http://localhost:8001/
这显然是行不通的,因为在任何内容到达第二行之前,所有内容都将被重定向到端口 8000。
所以,我只有两个选择:
要么找到另一种解决方案,而不是使用“/”作为重定向到 localhost:8000 的标准,这将以相同的方式工作(但我没有找到任何工作)
或者使用虚拟主机...还有另一个问题:据我所知,我真的对网络问题感到不舒服,要在同一台机器上拥有多个虚拟主机,我需要多个 CNAMES(一个用于每个虚拟主机),但我不知道如何列出/添加 CNAMES(我的服务器在 Windows Server 2008 上运行,无法访问万维网),而且我没有任何 "DNS" 在我的 "Administrative Tools" 中应用程序,因为我应该根据这个:https://technet.microsoft.com/en-gb/library/cc753579.aspx
非常欢迎任何帮助
提前致谢!
编辑:我真的认为我的解决方案是改变我的 Apache 配置。任何用来处理服务器配置的人都可以帮助我吗? :/
似乎我只缺少一个
<base href="/node/">
标签(甚至都不知道,Yeoman 将其创建为)
不过我还是有问题:
Socket.io ...我在这里并没有真正遇到自己的问题:它在 node_modules 中(这是正常的,因为我的服务器和客户端需要它),但试图在使用 base href 失败之前,我正在这样做。
我什至不知道它之前是如何工作的:(index.html :)
<script src="socket.io-client/socket.io.js"></script>
知道我的项目文件夹是这样的,这似乎不对:
[项目根目录]
-客户端
--index.html
-node_modules
--socket.io-客户端
---socket.io.js
我一直在尝试在我的 apache 服务器上添加一个 NodeJS 应用程序(由 Yeoman - angular-fullstack 生成器构建)。 我找到了另一个已回答的问题:Apache and Node.js on the Same Server 建议像这样使用 ProxyPass :
ProxyPass /node http://localhost:8000/
我这样做时遇到的问题是我的应用程序在 index.html 上启动,其中包含一些带有 href 的文件。 因为这些 hrefs 不是这样开始的
href="/node/..."
它们不会被 Proxypass 重定向,因此会导致 404 错误。
我不能只更改所有 href:这意味着我需要在我的 3 环境中重新做一遍:开发、生产和测试,即使我这样做了,每次我都会使用 Grunt为了测试我的应用程序,它无论如何都会自动重建我的 index.html。 (此外,它并没有解决所有问题,我这样做时出现了socketio的一些问题)
那时我唯一能做的就是像这样使用 ProxyPass :
ProxyPass / http://localhost:8000/
它确实有效,绝对没问题,就像我实际上是在本地主机上从我的服务器上使用该应用程序一样。
唯一剩下的问题是我的服务器上需要有 2 个环境,一个用于生产环境,一个用于测试环境,但我做不到
ProxyPass / http://localhost:8000/
ProxyPass / http://localhost:8001/
这显然是行不通的,因为在任何内容到达第二行之前,所有内容都将被重定向到端口 8000。
所以,我只有两个选择:
要么找到另一种解决方案,而不是使用“/”作为重定向到 localhost:8000 的标准,这将以相同的方式工作(但我没有找到任何工作)
或者使用虚拟主机...还有另一个问题:据我所知,我真的对网络问题感到不舒服,要在同一台机器上拥有多个虚拟主机,我需要多个 CNAMES(一个用于每个虚拟主机),但我不知道如何列出/添加 CNAMES(我的服务器在 Windows Server 2008 上运行,无法访问万维网),而且我没有任何 "DNS" 在我的 "Administrative Tools" 中应用程序,因为我应该根据这个:https://technet.microsoft.com/en-gb/library/cc753579.aspx
非常欢迎任何帮助 提前致谢!
编辑:我真的认为我的解决方案是改变我的 Apache 配置。任何用来处理服务器配置的人都可以帮助我吗? :/
似乎我只缺少一个
<base href="/node/">
标签(甚至都不知道,Yeoman 将其创建为)
不过我还是有问题:
Socket.io ...我在这里并没有真正遇到自己的问题:它在 node_modules 中(这是正常的,因为我的服务器和客户端需要它),但试图在使用 base href 失败之前,我正在这样做。
我什至不知道它之前是如何工作的:(index.html :)
<script src="socket.io-client/socket.io.js"></script>
知道我的项目文件夹是这样的,这似乎不对:
[项目根目录]
-客户端
--index.html
-node_modules
--socket.io-客户端
---socket.io.js