我的服务器上的conntrack表拥有超过120万的连接,我一直在追赶极限,但表格只是继续增长(但不是单调的 – 有时会下降)。 $ cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count 1278865 尽pipenetstat是非常合理的,但事实如此: $ netstat -ant | wc -l 908 我正在运行Debian与内核2.6.32-5-amd64。 据我所知,conntrack表保留最近的连接信息,所以预计它会比netstat大,但是这种行为似乎还是相当的极端! 该框主要用作Web服务器,Apache中的mod_python用于处理连接。 这些之外不应该有任何联系。 没有多余的mod_python线程正在运行(ps -ef看起来很正常,顶部看起来很正常),Apache和mod_python的错误日志看起来很正常。 (由于隐私原因,我无法发布详细的错误日志信息)。 在ip_conntrack中,IP地址似乎是相当分布的,并且在端口443上(正如人们期望Web服务器完全通过HTTPS服务一样)。 我不确定什么可能会导致失控的IP连接,我无法find互联网上的信息,这表明这是一个已知的问题。 有没有Apacheconfiguration或任何可能是罪魁祸首? 其他想法? 非常感谢。
我有Apache httpd(2.2.22)configuration为反向代理。 在这种情况下,我需要将我的Web服务器(代理请求的接收者)离线几毫秒。 在此期间,Web服务器不应收到任何请求,但我也不想拒绝任何请求。 我想要做的是以某种方式让httpd延迟这段时间的所有请求。 在步骤中: 告诉httpd延迟所有的请求,直到另行通知 停止Web服务器 启动networking服务器 继续从httpd转发请求 一个固定的延迟也可以做到这一点,但由于我无法预见Web服务器将离线的实际时间(除此之外它将不到一秒),dynamic方法将更适合。 我已经看过mod_proxy或mod_balancer如何能够帮助我,但我没有find一个明显的解决scheme。 我会很高兴你可以给我的任何指针。 编辑: 看起来像一个静态的方法就足够了。 一些有用的资源: httpd ProxyPass httpd ProxyTimeout ProxyPass与mod_rewrite (无需明确使用ProxyPass;不需要使用ProxyPassInterpolateEnv) 另请参阅这篇文章 ,讨论关于httpd返回503立即(代理和平衡器)的讨论。 替代scheme: 我们将把systemd部署到我们的服务器上。 systemd将解决我的问题,因为它可以保留在一端closures的套接字的请求。 这意味着,当我停止后端服务器很短的时间,所有的请求将排队,直到我再次启动并连接到套接字。 这就是我所说的优雅:)
就像标题所问,我能做些什么来防止Apache Linux / Cdorked.A后门感染?
我已经设置了一个虚拟主机,它指定了一个默认的文件加载URL时调用。 我遇到的问题是我需要默认的DirectoryIndex文件出现在URL中。 所以当我去www.mysite.co.uk时,我想让www.mysite.co.uk/app.php出现在URL中。 我如何使用我的apache.conf文件中的虚拟主机configuration来实现这个function? 这是我现在的代码: <VirtualHost *:80> ServerName *.mysite.co.uk DocumentRoot "/var/www/html/mysite/web/" DirectoryIndex app.php </VirtualHost>
我的网站configuration中有这些重写规则: RewriteEngine on RewriteRule ^app.php – [L] RewriteRule ^(.*)$ app.php$0 [L] 目标是所有的请求应该被附加到前端控制器“app.php”。 规则的最后一行导致我的服务器以“400:错误的请求”响应,无论我尝试什么path,甚至是空path。 我已经启用了重写日志,并尝试了两个path:“/”和“/ login”。 这是日志说: (2)init请求的uri / (3)将模式'^ app.php'应用于uri'/' (3)将模式'^(。*)$'应用于uri'/' (2)重写'/' – >'app.php /' (2)本地path结果:app.php / (2)用请求的uri / login初始化重写引擎 (3)将模式'^ app.php'应用于uri'/ login' (3)将模式'^(。*)$'应用于uri'/ login' (2)重写'/ login' – >'app.php / login' (2)本地path结果:app.php / login 根据日志,它应该成功。 如果我删除重写规则的最后一行,并访问URL“app.php / login”,那么它按预期工作。 有没有人知道为什么这不起作用? 注意:错误日志中没有错误。 注意:当最后的重写规则被删除时,结果path(“app.php /”,“app.php / login”)完美地工作。
我有一台运行在Mac OS X机器上的apache2服务器,与在虚拟机上运行Gitlab的机器相同。 Mac IP:192.168.0.7 Ubuntu(虚拟)IP:192.168.0.12 我希望apache将gitlab.mydomain.com转到Ubuntu虚拟机,而anythingelse.mydomain.com转到Mac。 我添加了一个文件(gitlab.mydomain.conf)到/private/etc/apache2/other/ (在Mac上),内容如下 <VirtualHost *:80> ServerName gitlab.mydomain.com ProxyPass / http://192.168.0.12 ProxyPassReverse / http://192.168.0.12 ProxyPreserveHost On </VirtualHost> Ubuntu虚拟机文件中的gitlab.yml包含 ##Gitlab settings gitlab: ## Web server settings host: gitlab.mydomain.com port: 80 https: false 当我去gitlab.mydomain.com我得到以下错误: Proxy Error The proxy server received an invalid response from an upstream server. The proxy server could not […]
我已经有一个工作了很长时间的SVN与SVN运行。 由于其他原因,我不得不做一个系统升级: apt-get upgrade 除了我的Apache2configuration,一切似乎都行了。 现在它不会以DAV: SVN开始。 我注意到, mod_dav_svn和mod_authz_svn突然失踪。 所以我试图安装它们: root@kolky:/etc/apache2# apt-get install libapache2-svn Reading package lists… Done Building dependency tree Reading state information… Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not […]
我的目标是在不同的服务器用户下运行ruby应用程序,并使用不同版本的ruby。 所以我会有用户作为“托pipe帐户”本质上。 文档根目录/应用程序文件将与RVMpipe理的ruby版本和gemset一起存在于其主目录中。 用户将有一个或多个networking应用程序需要运行。 此用户站点的虚拟主机将指向用户主目录中的文档根目录,Web服务器也将以该user:group身份有效运行。 示例布局: /home/theuser /.rvm /applications /railsapp1 /public [ other rails dirs ] /somephpapp (symfony, zf, etc.) /public [ other framework dirs ] /www /railsapp1.com (ln -s ../applications/railsapp1/public) /somestaticsite.com /somephpapp.com (ln -s ../applications/somephpapp/public) 所以… 问题1:我甚至有可能? 我知道乘客在虚拟主机级别支持ruby版本和乘客用户(我假设乘客用户等同于指定用户:fcgi,php-fpm,SuExec组),但是我发现所有的intstuction似乎都安装了apache模块特定的RVM用户,这似乎很奇怪。 还是只是创build一个通用用户来安装模块,然后在每个帐户的基础上做所有其他的事情? 问题2:即使这是可能的,设置的正确方法是? 这里最好的做法是什么: networking服务器/应用程序必须作为给定帐户的用户:组运行 必须有能力在每个应用程序的基础上运行不同版本的ruby 每个用户必须能够运行多个应用程序 每个应用程序必须包含在特定用户的主目录下 用户必须沙箱到他/她的homedir(不是一个sodoer) (注意:除了奇怪的shell脚本,我自己也不是ruby dev / user,或者使用compass / zurb-foundation,所以我打开Passenger之外的其他选项,而且这个服务器并不是一个生产环境。
简短的版本 :我们希望Apache在获得500状态时捕获并返回类似404的东西。 有没有办法做到这一点? 更长的版本 :这些服务器运行的应用程序不是我们的,而且最近他们没有通过PCI符合性扫描,因为如果您弄糟了主机,可能会出现500个状态错误。 从长远来看,我们将把它们移动到不同的networking,因此它们不需要符合PCI规范,但是从短期来看,我们希望能够快速修复,而不是显示应用程序返回的500状态。 这两个应用程序都通过Apache接受他们的请求。 我希望/假设这将是一个mod_rewrite规则,但不知道根据状态码使mod_rewrite更改。
这是在Amazon Linux实例上(显然是基于CentOS 6) # service httpd restart Stopping httpd: [FAILED] Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:8080 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:8080 no listening sockets available, shutting down Unable to open logs [FAILED] 显然,自停止失败后就不会启动。 但是,为什么不能停下来呢? 我可以一遍又一遍地input“service httpd stop”,它只是保持打印[FAILED]。 “killall httpd”工作正常。 在执行kill和服务httpd启动之后,停止一段时间再正常工作。 最令人不安的。 Server […]