[英]Can't connect from outside to Postgres running on AWS EC2 instance
我已经在我的 EC2 ubuntu(18) 上安装了 Postgres 10。 但我无法从我的本地 Mac 访问它。 得到这个错误。
我的设置是:
我更新了 Postgres 配置:
host all all 0.0.0.0/0 md5
host all all ::/0 md5
listen_addresses = '*' # what IP address(es) to listen on;
在 EC2 实例上,我更改了:
在 EC2 实例上,此命令返回已公开的端口:
ubuntu@ip-XXXXXXXXXX:~$ netstat -nat |grep :5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
tcp6 0 0 :::5432 :::* LISTEN
看起来 EC2 实例实际上并没有暴露这个端口。 其他端口如:80 或:22 可以正常访问,但端口:5432 返回错误:
➜ ~ nc -zv XX.XXX.XXX.XXX 80
Connection to XX.XXX.XXX.XXX port 80 [tcp/http] succeeded!
➜ ~ nc -zv XX.XXX.XXX.XXX 5432
nc: connectx to XX.XXX.XXX.XXX port 5432 (tcp) failed: Operation timed out
我的 EC2 实例上也安装了 Nginx,它的配置是:
server {
charset utf-8;
listen 80;
server_name XXXXXXXXXXXXXXX.ca; # <--- hidden domain name
location / {
root /opt/frontend/develop/dist/tweeter-ui/;
try_files $uri /index.html;
}
location /api/ {
proxy_pass http://localhost:8080/api/;
}
}
PostgreSQL 服务正在运行:
ubuntu@ip-XXXXXXXXXX:~$ service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Wed 2022-11-23 22:41:33 UTC; 1h 6min ago
Process: 6283 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 6283 (code=exited, status=0/SUCCESS)
Nov 23 22:41:33 ip-XXXXXXXXXX systemd[1]: Starting PostgreSQL RDBMS...
Nov 23 22:41:33 ip-XXXXXXXXXX systemd[1]: Started PostgreSQL RDBMS.
我的设置有什么问题? 我在这个论坛和 Inte.net 上尝试了很多不同的帖子,但没有任何帮助。 ((我还必须使用 Postgres 路由配置 Nginx 吗?
您遵循了正确的步骤。 问题是防火墙阻塞了 Postgres 的 5432 端口,因此需要将其添加到防火墙允许列表中。
sudo ufw allow 5432/tcp
当你运行$ sudo ufw status
时,你会看到:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
5432/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
5432/tcp (v6) ALLOW Anywhere (v6)
然后运行sudo firewall-cmd --reload
,当你看到success
时,你就完成了!
您将能够从实例外部连接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.