2021年11月16日 21:04总结:已能访问到,应该是安全组和 ECS 不匹配的问题。在听到回答者说可能是不匹配的问题后,我看了下是有加入安全组的;但我还是重新加入了安全组,仍然不能访问;在重新看了下安全组规则后,发现规则少了几条,重新添加后能正常访问了。由于没有全程截图记录,只能说大概率是这个问题,谢谢2位热心的回答者:
然后去远足 - SegmentFault 思否
innlym - SegmentFault 思否
重新加入安全组之前的截图:
------------------------分割线------------------
原始问题:
阿里云服务器,ubuntu启动了Tomcat、Nginx,外网访问不到(120.27.xxx.xxx的响应时间过长),在自己笔记本电脑上telnet端口8080、80也不通,大佬们能不能帮忙看看,谢谢!
- 看Tomcat日志是正常启动了,端口是8080
- 80、8080端口有监听
- 阿里云服务器防火墙加了80和8080规则,后来将出入口全部端口开放了都不行;
- curl localhost:80 能通,但curl公网IP失败: curl 120.27.xxx.xxx:80 失败,超时,8080端口同理,curl localhost:8080 返回了一个html页面
- 启动了Redis和MySql,都能连接,本机也能telnet通端口3306和6379
- ubuntu没开防火墙
- IP地址没搞错,登陆阿里云控制台和通过
curl ipinfo.io
都能看到公网IP地址
端口监听:
# netstat -anp | grep 80
tcp 0 0 0.0.0.0:6380 0.0.0.0:* LISTEN 105220/redis-server
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 211452/nginx: maste
tcp 0 0 172.16.208.151:33622 100.100.30.26:80 ESTABLISHED 154443/AliYunDun
tcp 0 0 172.16.208.151:52778 100.100.45.186:80 TIME_WAIT -
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 215803/java
tcp6 0 0 :::6380 :::* LISTEN 105220/redis-server
tcp6 0 0 :::8080 :::* LISTEN 215803/java
tcp6 0 0 :::80 :::* LISTEN 211452/nginx: maste
unix 2 [ ] STREAM CONNECTED 3057620 215803/java
unix 2 [ ] STREAM CONNECTED 3057630 215803/java
unix 3 [ ] STREAM CONNECTED 154480 1/systemd /run/systemd/journal/stdout
unix 3 [ ] STREAM CONNECTED 18001 1/systemd /run/systemd/journal/stdout
curl本地8080端口能通,返回一个html页面,
# curl 127.0.0.1:8080
<!DOCTYPE html>
<html lang="en">
<head>
.....省略......
关于防火墙:
# sudo ufw status
Status: inactive
# firewalld
Command 'firewalld' not found, but can be installed with: apt install firewalld
虽然没使用iptables,但是还是尝试加了配置,依然访问失败
# iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp -i eth0 --dport 8080 -j ACCEPT
其他版本信息:
服务器版本信息:
# lsb_release -a
LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
$ telnet 120.27.XXX.XXX 6379
Connecting to 120.27.XXX.XXX:6379...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
$ telnet 120.27.XXX.XXX 80
Connecting to 120.27.XXX.XXX:80...
Could not connect to '120.27.XXX.XXX' (port 80): Connection failed.
apache-tomcat-8.5.71安装: Ubuntu 16.04下安装Tomcat 8.5.9_服务器应用_Linux公社-Linux系统门户网站
nginx version: nginx/1.18.0 (Ubuntu) 通过apt-get install安装,service nginx start
启动
从描述上来没啥问题,唯一能想到的也就是不是海外主机导致网络不同,不过看了一下这个 IP 段似乎是阿里云华北一地区的机房,国内就不应该有这个问题了。
这种情况建议提工单问一下阿里云自己技术支持人员。
P.S. 没看有核对安全组和 ECS 是否匹配的步骤,别最后改了半天发现不是这台机器的安全组那就……另外再瞅一眼现在 nginx 配置的 server_name 看看是啥。