我一直在尝试在我的apache服务器上添加一个NodeJS应用程序(由Yeoman构建-angular-fullstack生成器)。我发现了另一个已回答的问题:同一服务器上的Apache和Node.js建议使用ProxyPass,如下所示:
ProxyPass /node http://localhost:8000/
执行此操作时遇到的问题是我的应用程序在index.html上启动,其中包含一些带有href的文件。由于这些href不是这样开始的
href="/node/..."
Proxypass不会重定向它们,因此会导致404错误。
我不能只更改所有的hrefs:这意味着我需要在3个环境(开发,生产和测试)上重新做一遍,即使这样做,每次我都会使用Grunt来测试我的应用程序时,无论如何,它会自动重建我的index.html。(此外,它不能解决所有问题,当我这样做时,socketio会出现一些问题)
我唯一能做的就是像这样使用ProxyPass:
ProxyPass / http://localhost:8000/
在那里,它确实可以工作,绝对没有问题,就像我实际上是从本地主机上的服务器上使用该应用程序一样。
唯一剩下的问题是我需要在服务器上有两个环境,分别用于生产和测试,而我做不到
ProxyPass / http://localhost:8000/
ProxyPass / http://localhost:8001/
显然,它将无法正常工作,因为在所有内容都可以到达第二行之前,所有内容都将重定向到8000 b端口。
因此,我只剩下两个选择:
除了使用“ /”作为重定向到localhost:8000的标准之外,还可以找到另一种解决方案,该解决方案可以以相同的方式工作(但我没有发现任何可行的方法)
还是使用虚拟主机...还有一个问题:我真的对网络问题不满意,据我了解,要在同一台计算机上拥有多个虚拟主机,我需要多个CNAME(每个虚拟主机一个),但是我不知道如何列出/添加CNAMES(我的服务器在Windows Server 2008上运行,无法访问万维网),并且我的“管理工具”中没有任何“ DNS”应用程序,因为我应该按照这个来做: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-client
--- socket.io.js
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句