使用 pm2 apache 配置 nodejs api

configure nodejs api using pm2 apache

我有 nodejs 应用 运行在 centos 7 上使用 pm2

当我 运行

在服务器上
curl http://127.0.0.1:3021/products

它 returns 我的数据符合预期。

现在我希望 api 可以访问外部服务器。

所以我正在尝试配置某种反向代理?

我已经安装了 Apache 运行ning 并在服务器 https://forge.puppet.com/puppetlabs/apache

上使用 puppet 模块进行了配置
apache::vhost { 'my-api.local':
        port => 80,
        proxy_preserve_host => true,
        proxy_dest_match => 'http://127.0.0.1:3021',
        docroot           => '/opt/nodejs-apis/my-api.local/current/build',
      }

我的主机文件中有条目 my-api.local 指向我的 vagrant box ip.

当我在浏览器中访问 http://my-api.local 时,我得到了关注

{"statusCode":400,"error":"Bad Request","message":"Invalid URL: //"}

知道我错过了什么吗?

一些有用的链接

Running Node as a service with PM2 - connection refused https://www.tecmint.com/install-pm2-to-run-nodejs-apps-on-linux-server/

更新

看完这个https://www.youtube.com/watch?v=KTdv_DzwTS0

我什至更改了虚拟主机文件,现在看起来像这样。

<VirtualHost *:80>
  ServerName my-api.local
  ProxyPreserveHost On
  ProxyPass / http://localhost:3021/
  ProxyPassReverse / http://localhost:3021/
</VirtualHost>

但还是没有运气:(

花了几个小时 :(, 终于这个解决了

  apache::vhost { 'my-api.local':
    port => 80,
    proxy_preserve_host => true,
    proxy_pass          => { 'path' => '/', 'url' => 'http://localhost:3021' } ,
    docroot             => false,
  }

如上 /etc/httpd/conf.d/ 中生成的

<VirtualHost *:80>
  ServerName my-api.local
  ProxyPreserveHost On
  ProxyPass / http://localhost:3021/
  ProxyPassReverse / http://localhost:3021/
</VirtualHost>

但是还需要刷新pm2服务.. 不要忘记调用 api :) 例如 http://my-api.local/products

感谢https://serverfault.com/questions/804795/puppet-apache-vhost-proxypassreverse-configuration提供线索