V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
terence4444
V2EX  ›  Apache

解决了一个 Apache 拒绝服务的问题((OS 64)指定的网络名不再可用。AH00341: winnt_accept: Asynchronous AcceptEx failed.)

  •  
  •   terence4444 · 2017-11-12 14:34:03 +08:00 · 5140 次点击
    这是一个创建于 2328 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事件起因

    由于上海电信把家庭宽带 443 端口封掉,导致我的微信公众号“游戏打折情报”( yxdzqb )无法从微信服务器直连。于是我用 PHP 写了一个类似反向代理的转发器布署在外服务器上,用途是:把来自 80/443 的微信服务转发给家庭宽带的其它未封端口上。

    这里做个广告:微信公众号 游戏打折情报 可以查询 Steam/杉果 /Humble Bundle 的打折 /最低价情况,还有一些免费领取的推送,不会推垃圾信息,可以自行查看推送历史。

    故障现象

    一般情况下可以正常使用,但过了一段时间以后微信公众号会出现无响应(经判断是拒绝服务),重启 Apache 后即恢复正常。把 log 调到 Debug 模式以后发现如下可疑行:

    中文 Windows 系统:
    [mpm_winnt:warn] (OS 64)指定的网络名不再可用。
    AH00341: winnt_accept: Asynchronous AcceptEx failed.
    
    英文 Windows 系统:
    (OS 64)The specified network name is no longer available.
    AH00341: winnt_accept: Asynchronous AcceptEx failed.
    

    解决方法

    在 MPM 里调试了很久没找到问题,后来找到了这个讨论: https://communities.ca.com/thread/241692373

    解决方法是升级到 Apache 2.4.24 以后的版本,如果执行的是 2.4.23 或以前的版本,也可以在 httpd.conf 中改如下行:

    AcceptFilter https connect
    AcceptFilter http connect
    

    我看到很多中文网站(都是抄的同一个来源)说:

    加入:
    Win32DisableAcceptEx
    
    或者:
    AcceptFilter https none
    AcceptFilter http none
    

    并不完全正确,Win32DisableAcceptEx 只适用于 Apache 2.2 而 AcceptFilter https none 不用 Filter 会有一些安全风险。

    在这里记录一下分享给大家,也以免自己忘了。

    3 条回复    2017-11-13 00:23:57 +08:00
    cy97cool
        1
    cy97cool  
       2017-11-12 23:40:15 +08:00 via Android
    666
    不过好奇一下这种端口转发为啥不 iptables 直接转发就好了,或者 nginx 反向代理一下

    还要扯上 PHP 和 Apache 干啥
    terence4444
        2
    terence4444  
    OP
       2017-11-13 00:05:22 +08:00
    @cy97cool 因为微信公众号服务器只允许连到 80 或 443 端口,不允许自定义端口,只能从一个 80/443 端口开放的服务器转发……
    terence4444
        3
    terence4444  
    OP
       2017-11-13 00:23:57 +08:00
    @cy97cool Apache 是用来做微信服务器的,后端是 Python 所以用了 mod_wsgi 处理微信发来的消息。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1028 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:21 · PVG 06:21 · LAX 15:21 · JFK 18:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.