【发布时间】:2019-05-31 02:31:06
【问题描述】:
使用 forever 在虚拟机上永久运行节点服务器,如果不明确在 url 中添加端口,我无法让应用程序运行,如下所示:URL.com:8080 如果我不使用 URL 中的端口,我会加载应用程序的文件结构。
重现步骤:我有一个 create-react-app 应用程序。在虚拟服务器上,我运行“npm run build”以确保我有一个构建服务。然后我在应用程序的根目录上运行永远启动。
下面的代码应该提供所有必要的细节。如果您需要,我可以提供更多。
我花了很多时间调整 .conf 文件以尝试不同的配置,但我似乎无法理解。我正在使用它并成功托管了两个静态 html 网站,但没有托管此节点应用程序。
包.json:
...
"main":"server/index.js",
"proxy":"http://localhost:8080"
...
Apache url.conf:
<VirtualHost *:80>
ServerName URL.com
ServerAlias URL.com:8080/
DocumentRoot /var/www/nameOfApp/
<Directory />
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/nameOfApp/public>
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
</Directory>
</VirtualHost>
使用 express 的节点服务器文件:
app.use(express.static(`${__dirname}/../build`));
我还确保启用了允许代理的模块。所以我认为本质上,我需要的是请求这个站点,而不是最后需要 :8080。
【问题讨论】:
-
您为 Apache 启用了代理模块,但您是否正确设置了它?类似于stackoverflow.com/questions/9831594/…
-
我只使用 a2en... 来启用它们。这不是正确的方法吗?我需要修改其他配置吗? @jimmy5312
-
我浏览了您发送给我的链接,并在我的 proxy.conf 文件中添加了 ProxyPass 行,并确保启用了两个 LoadModule。然后我在 /var/www 中添加了一个“节点”文件夹,并将 site.conf 中的 DocumentRoot 更改为指向该文件夹,但我仍然遇到同样的问题
标签: node.js reactjs apache reverse-proxy