Apache2 托管角度应用程序不会向网络外的 node.js 应用程序托管的 API 发出 http 请求

问题描述 投票:0回答:0

我有一个通过 Apache2 网络服务器运行的 Angular 应用程序,它可以对 Firebase 上的数据库进行 http 调用。在我的路由器上打开端口后,在我的家庭网络内部和家庭网络外部都运行良好。

一切都很完美,但想在我的服务器上使用 PSQL 托管我自己的数据库。

所以我构建了一个 express.js 节点服务器,它具有与我创建的 PSQL 数据库通信的端点。然后我调整了我的 Angular 应用程序以对 express.js 服务器进行 http 调用。在我的家庭网络中,一切都很好。但是,从我的网络外部打开了 Angular 应用程序,但没有来自 PSQL 数据库的数据。

我已经检查了日志,/var/logs/apache2/access.log 会在我点击刷新时显示 GET 请求……但没有显示任何数据。我在 express 服务器中有一个 console.log,每当有 http 请求进入时,它都会向我显示一条小消息,但是当从网络外部访问它时,没有任何内容打印到控制台...在我的网络中运行时打印到控制台很好.

我正在使用的设置: apache2 ports.conf 我正在侦听端口 80。我创建了自己的虚拟主机,启用了它,并禁用了默认的 000-default。我的主机文件与默认文件几乎相同,只是将 documentroot 更改为正确的文件夹。 我的快速服务器在端口 3000 上运行。每个端点路由运行 PSQL 查询的请求。两台服务器都在同一台机器上运行。端口 80 和 3000 都添加到我的路由器的端口转发设置中。

虚拟主机文件:

  <VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/psql

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
  </VirtualHost>

我的快递服务器的一个例子:

app.get('/rss', rss_db.getRSS)

回调在外部文件中,看起来像:

const getRSS = (request, response) => {
 pool.query('SELECT * FROM rss ORDER BY rss_id ASC', (error, results) => {
  if (error) {
  throw error
  }
  console.log("request made")
  response.status(200).json(results.rows)
 })
}

Angular 应用程序的数据服务发出此 http get 请求(ip 是服务器地址):

return this.http.get<any>(http://192.168.1.2:3000/rss);
node.js angular apache
© www.soinside.com 2019 - 2024. All rights reserved.