【问题标题】:Cannot connect to Apache HTTP Server from outside after awhile一段时间后无法从外部连接到 Apache HTTP Server
【发布时间】:2015-09-16 16:32:51
【问题描述】:

我们的网站在一段时间(2-3 天)后无法从外部(不是本地主机)访问。

我们使用 Apache HTTP Server 2.4。服务器上托管了 4 个网站,主要使用端口 443 使用自签名服务器证书。到目前为止,一切运行良好。由于我使用 Alias 指令和 PHP 添加了一个新网站,过了一段时间 all 网站不再可以从远程访问。但是,我可以从服务器上的 localhost 访问它们。

当网站不再可访问时,错误日志不显示任何条目。我们目前通过简单地重新启动 Apache HTTP 服务器来解决问题,一切都恢复正常。问题是,我们需要 24/7 全天候可用的服务。

这是当前的 httpd.conf:

Listen 443
SSLSessionCache "shmcb:${SRVROOT}/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
<VirtualHost *:443>
    DocumentRoot "D:/htdocs"
    ServerName myserver.net:443

    Alias /site2 "${WEBROOT}/site2"
    Alias /site3 "${WEBROOT}/site3"

    ScriptInterpreterSource Registry-Strict
    Options +ExecCGI +FollowSymLinks -Indexes
    DirectoryIndex index.cgi index.html index.php

    SSLEngine on
    SSLCertificateFile "${SRVROOT}/ssl/server.crt"
    SSLCertificateKeyFile "${SRVROOT}/ssl/server.key"
</VirtualHost>

LoadModule php5_module "${PHPROOT}/php5apache2_4.dll"
<IfModule php5_module>
    AddHandler application/x-httpd-php .php
    PHPIniDir "${PHPROOT}"
</IfModule>

有人知道在哪里看吗?非常感谢。

更新

服务器运行了 13 天,然后由于一些配置更改,我们不得不重新启动它。用了1天,问题又回来了。我查看了服务器状态页面,但找不到可能是什么问题的线索:

Server Version: Apache/2.4.16 (Win64) OpenSSL/1.0.1p PHP/5.6.12
Server MPM: WinNT
Server Built: Jul 13 2015 12:31:58
Distributed by: The Apache Haus
Compiled with: Visual Studio 2012
Current Time: Tuesday, 06-Oct-2015 11:38:01 Mitteleuropäische Sommerzeit
Restart Time: Sunday, 04-Oct-2015 23:40:51 Mitteleuropäische Sommerzeit
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 1 day 11 hours 57 minutes 9 seconds
Server load: -1.00 -1.00 -1.00
Total accesses: 326772 - Total Traffic: 4.2 GB
2.52 requests/sec - 33.8 kB/second - 13.4 kB/request
1 requests currently being processed, 63 idle workers

【问题讨论】:

  • 如果可以从内部访问但不能从外部访问,则更有可能是防火墙问题。
  • @Capsule 所以你认为有些东西正在关闭防火墙的端口? apache 是否在重启时重新配置防火墙?
  • 否,但它可能会释放卡住的连接并告诉防火墙可以再次接受新连接。您应该激活 Apache 的server-status 并在重新启动它之前检查发生了什么。你可能会看到一些不应该存在的 Kee-Alive 连接,或者其他一些奇怪的东西。
  • @Capsule 我设法看到了服务器状态页面。服务器的正常运行时间现在是 6 天 3 小时。我确实看到每天都有越来越多的闲置工人(现在是 63 人)。有什么想法可能是什么问题?您想查看完整的状态页面吗?
  • 我会建议限制备用进程或线程的数量,但显然你不能在 Windows 中这样做,根据:httpd.apache.org/docs/2.4/mod/mpm_winnt.html。一旦您无法从外部访问服务器,您应该尝试弄清楚空闲工作人员的数量是多少,也许您正在做某事。

标签: php apache http


【解决方案1】:

AcceptFilter http 无 AcceptFilter https 无

发生这种情况时,error.log 应显示“Asyncroneous AcceptEx Failed”和“网络名称不再可用”的内容。

这两个指令是 Apache 2.2.x 中 Win32DisableAcceptEx 的替换。

【讨论】:

  • 您好,感谢您的回复。您能否更详细地解释一下您的答案。我目前不知道你在说什么。我想配置文件中一定有什么改变?
猜你喜欢
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 2020-06-12
  • 2012-10-15
  • 1970-01-01
  • 2019-04-27
相关资源
最近更新 更多