关于外网访问阿里云Tomcat、Nginx失败,已配置阿里云规则和关闭防火墙的问题

2021年11月16日 21:04总结:已能访问到,应该是安全组和 ECS 不匹配的问题。在听到回答者说可能是不匹配的问题后,我看了下是有加入安全组的;但我还是重新加入了安全组,仍然不能访问;在重新看了下安全组规则后,发现规则少了几条,重新添加后能正常访问了。由于没有全程截图记录,只能说大概率是这个问题,谢谢2位热心的回答者:
然后去远足 - SegmentFault 思否
innlym - SegmentFault 思否

重新加入安全组之前的截图:

------------------------分割线------------------
原始问题:
阿里云服务器,ubuntu启动了Tomcat、Nginx,外网访问不到(120.27.xxx.xxx的响应时间过长),在自己笔记本电脑上telnet端口8080、80也不通,大佬们能不能帮忙看看,谢谢!

  1. 看Tomcat日志是正常启动了,端口是8080
  2. 80、8080端口有监听
  3. 阿里云服务器防火墙加了80和8080规则,后来将出入口全部端口开放了都不行;
  4. curl localhost:80 能通,但curl公网IP失败: curl 120.27.xxx.xxx:80 失败,超时,8080端口同理,curl localhost:8080 返回了一个html页面
  5. 启动了Redis和MySql,都能连接,本机也能telnet通端口3306和6379
  6. ubuntu没开防火墙
  7. 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启动

阅读 4.1k
2 个回答

从描述上来没啥问题,唯一能想到的也就是不是海外主机导致网络不同,不过看了一下这个 IP 段似乎是阿里云华北一地区的机房,国内就不应该有这个问题了。

这种情况建议提工单问一下阿里云自己技术支持人员。

P.S. 没看有核对安全组和 ECS 是否匹配的步骤,别最后改了半天发现不是这台机器的安全组那就……另外再瞅一眼现在 nginx 配置的 server_name 看看是啥。

可能是你域名没备案被封端口了,联系阿里云客服。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题