繁体   English   中英

使用Apache2反向代理部署Yeoman全栈应用程序?

[英]Deploy Yeoman full-stack app with Apache2 Reverse Proxy?

我有一个Yeoman全栈应用程序@ 2.0.13,具有与本教程完全相同的目录结构。

一切正常grunt serve:dist等可以正常工作。 现在,我想进入生产阶段,并使用mod_proxy将应用程序作为example.com/xxx部署在apache服务器上。 我将grunt build生成的/dist目录复制到主目录,然后启动服务器应用程序:

NODE_ENV=production node server/app.js

该应用程序启动,填充用户,依此类推。 一切正常。 现在,我为节点应用程序设置虚拟主机设置:

<Location /html/xxx/>
  ProxyPass http://127.0.0.1:9000/
  ProxyPassReverse http://127.0.0.1:9000/
</Location>

这类作品。 奇怪的是,dist目录中的index.html 正确加载

  dist
    ├── public
    │   ├── app                 
    │   ├── assets              
    │   ├── bower_components          
    │   └─ index.html <---
    |
    └── server
        ├── api                 
        ├── auth                
        ├── components          
        ├── config              
        ├── views              
        ├─ app.js              
        └─ router.js

proxyPass有效, index.html已加载-但index.html所引用的文件(4个组合的public/app文件/ vendor.jsapp.js等)不是。 无论我尝试了什么,无论我测试过的任何指南中的设置如何,我都得到404

在此处输入图片说明

确实花了很多时间在此上。 在我看来,反向代理会以某种方式更改内部网址? 如果我将dist/替换为仅侦听端口9000并返回hello world的节点脚本,则该设置有效。

我想念什么? 还有另一种方法吗?

所以我也在整个地方看了很长时间,但终于找到了这个链接:
Apache和Yeoman在同一服务器上构建了NodeJS应用...虚拟主机?
这使我走上了正确的道路,所以我认为应该解决的问题是将index.hml文件的标头部分中的基本标记更改为:

    <base href="/xxx/">

而且它们应该是可访问的,至少对我而言。
我的虚拟主机设置如下所示:

    <Proxy /xxx/*>
            Order deny,allow
            Allow from all
    </Proxy>

    ProxyPass /xxx http://127.0.0.1:6969/
    ProxyPassReverse /xxx http://127.0.0.1:6969/

对于其他有此问题的人,我最终使用了端口80 这可行。 在节点环境中,无论如何都不需要或使用/www或apache / nginx。 所以摆脱它并使用

 // Server port
 port:     process.env.OPENSHIFT_NODEJS_PORT ||
           process.env.PORT ||
           80,

在yeoman production.js文件中。 而已。 可以从用户home/目录home/目录中提供整个应用程序,而无需安装任何类型的服务器http软件。 只需将dist上传到服务器上的任何位置,然后永久使用即可:

sudo NODE_ENV=production forever start server/app.js

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM