V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
tracker647
V2EX  ›  C++

C++ TinyWebServer 项目在云服务器上运行不了

  •  
  •   tracker647 · Aug 20, 2022 · 3122 views
    This topic created in 1351 days ago, the information mentioned may be changed or developed.

    能正常./server 运行,但是浏览器上用服务器公网 Ip+9006 端口打不开,看了下云服务器安全组和防火墙 9006 端口都是开放的,但是浏览器上显示不了界面,telnet 测试了下 9006 端口连通性没问题,不知道怎么搞的。

    Supplement 1  ·  Aug 21, 2022

    尝试了下Telnet发请求直接返回error: image-20220821122719691

    浏览器打开界面及日志如下: image-20220821122749275

    字数限制想直接用图片,奈何SMMS抽风死活都是ECONNRESET 枯了

    2022-08-21 12:29:25.646066 [info]: timer tick
    2022-08-21 12:29:30.401103 [info]: deal with the client(103.xxx.xxx.xxx)
    2022-08-21 12:29:30.401189 [info]: adjust timer once
    2022-08-21 12:29:30.401374 [info]: GET / HTTP/1.1
    2022-08-21 12:29:30.401403 [info]: Host: 47.xxx.xxx.xxx:9006
    2022-08-21 12:29:30.401414 [info]: Connection: keep-alive
    2022-08-21 12:29:30.401423 [info]: Cache-Control: max-age=0
    2022-08-21 12:29:30.401432 [info]: oop!unknow header: Cache-Control: max-age=0
    2022-08-21 12:29:30.401442 [info]: Upgrade-Insecure-Requests: 1
    2022-08-21 12:29:30.401456 [info]: oop!unknow header: Upgrade-Insecure-Requests: 1
    2022-08-21 12:29:30.401466 [info]: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
    2022-08-21 12:29:30.401477 [info]: oop!unknow header: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
    2022-08-21 12:29:30.401487 [info]: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    2022-08-21 12:29:30.401501 [info]: oop!unknow header: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    
    
    Supplement 2  ·  Aug 21, 2022
    2022-08-21 12:29:30.401510 [info]: Accept-Encoding: gzip, deflate
    2022-08-21 12:29:30.401519 [info]: oop!unknow header: Accept-Encoding: gzip, deflate
    2022-08-21 12:29:30.401532 [info]: Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
    2022-08-21 12:29:30.401540 [info]: oop!unknow header: Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
    2022-08-21 12:29:30.401573 [info]: deal with the client(103.xxx.xxx.xxx)
    2022-08-21 12:29:30.401614 [info]: adjust timer once
    2022-08-21 12:29:30.401698 [info]: close fd 16
    2022-08-21 12:29:30.646123 [info]: timer tick
    Supplement 3  ·  Sep 17, 2022
    8.21: 问题解决。
    把问题发给舍友帮忙测试服务器,发现除了 Chrome 以外的其他浏览器能够打开项目页面,才发现是 Chrome 缓存的问题,原理是一个地址如果几次都打不开就会被缓存记录,下次打开就会被直接重置,清空后页面就能正常显示了。
    15 replies    2022-08-22 15:43:05 +08:00
    BrettD
        1
    BrettD  
       Aug 20, 2022 via iPhone
    Telnet 手敲一个 HTTP 请求看返回什么
    Nemodontcry
        2
    Nemodontcry  
       Aug 21, 2022
    "浏览器显示不了界面" 具体是报什么错?或者看一下 log , 看一下服务初始化有没有错误
    SupperMary
        3
    SupperMary  
       Aug 21, 2022
    云服务器自己访问自己看看, curl -v http://xxxxx 这样,如果能通应该是云服务器商直接拦截掉了
    tracker647
        4
    tracker647  
    OP
       Aug 21, 2022
    @BrettD 尝试了下 Telnet 发请求直接返回 error:
    tracker647
        5
    tracker647  
    OP
       Aug 21, 2022
    @SupperMary
    curl 看起来能通。。 似乎是云服务器拦截了 那咋办

    curl -v 47.xxx.xxx.xxx:9006
    * Trying 47.xxx.xxx.xxx:9006..
    * TCP_NODELAY set
    * Connected to 47.xxx.xxx.xxx (47.xxx.xxx.xxx) port 9006 (#0)
    > GET / HTTP/1.1
    > Host: 47.xxx.xxx.xxx:9006
    > User-Agent: curl/7.68.0
    > Accept: */*
    >
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 200 OK
    < Content-Length:586
    < Connection:close
    <
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>WebServer</title>
    </head>
    <body>
    <br/>
    <br/>
    <div align="center"><font size="5"> <strong>欢迎访问</strong></font></div>
    <br/>
    <br/>
    <form action="0" method="post">
    <div align="center"><button type="submit">新用户</button></div>
    </form>
    <br/>
    <form action="1" method="post">
    <div align="center"><button type="submit" >已有账号</button></div>
    </form>


    </div>
    </body>
    </html>


    * Closing connection 0
    BrettD
        6
    BrettD  
       Aug 21, 2022 via iPhone
    在服务器本地请求 127.0.0.1:9006 试一下
    tracker647
        7
    tracker647  
    OP
       Aug 21, 2022
    @Nemodontcry 附言有 log
    Nemodontcry
        8
    Nemodontcry  
       Aug 21, 2022
    @tracker647 看起来像是被云服务器拦了,再看看安全组策略?我之前在阿里云的服务器上跑过 TinyWebServer ,配置正确可以正常访问的
    tracker647
        9
    tracker647  
    OP
       Aug 21, 2022
    @Nemodontcry
    就定了一条 TCP ,不知道要不要订其他连接方式,但防火墙上看着 9006 端口 TCP 和 UDP 都好好的

    ![image-20220821145552008]( https://s2.loli.net/2022/08/21/iLvzWAG7EIKyk84.png)

    ![Snipaste_2022-08-21_15-10-14.jpg]( https://s2.loli.net/2022/08/21/7SaiQxLEnyWj5mF.jpg)
    V1Eerie
        10
    V1Eerie  
       Aug 21, 2022
    一个猜想,服务器以及域名相关的没备案,被你的服务器提供商拦了。
    tracker647
        11
    tracker647  
    OP
       Aug 21, 2022
    测试了 8080 和 9006 两个端口,一个没搞安全组和防火墙,另一个两个都搞了,结果 8080 的端口范围显示超时,9006 的端口显示连接已重置。
    Portlet0
        12
    Portlet0  
       Aug 21, 2022 via Android
    国内默认封禁相关端口,需要先备案
    jones2000
        13
    jones2000  
       Aug 21, 2022
    发工单,问云服务商。
    shxxy
        14
    shxxy  
       Aug 22, 2022 via Android
    国内服务器没备案之前好像 HTTP 都不给通,浏览器访问按理说应该跳转到一个提示你没备案的页面

    我晃了一眼看到你收藏夹里有个『百度 - 百度搜索』
    cooldaddy
        15
    cooldaddy  
       Aug 22, 2022 via Android
    直接用 ip (非域名)且不是 80 的话,按理说不会被拦的吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2306 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 01:34 · PVG 09:34 · LAX 18:34 · JFK 21:34
    ♥ Do have faith in what you're doing.