我有一个通过 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);