Articles of apache 2.2

“服务器closures连接而不发送任何数据”

服务器设置 问题 诊断信息 我试过了 需要特定的帮助 1.我有以下服务器设置: (使用Hyper-V在VM中运行) Debian挤压 Linux 2.6.32-5-amd64 Apache2-mpm-prefork 2.2.16-6 + squeeze10 PHP 5.3.3-7 + squeeze14 该服务器使用Suhosin Patch 0.9.9.1进行保护 每个孩子的最大请求数:0 – 保持活动:开 – 每个连接的最大数量:100 超时连线:300 – Keep-Alive:15 加载模块核心mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic mod_auth_digest mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_cgi mod_deflate mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_ssl mod_status WordPress的3.4.2(即将升级到3.5) […]

如何configurationApache的mod_proxy_html作为一个Ajax代理?

我试图build立一个网站,让您查看和操纵任何其他网站的任何网页的数据。 要做到这一点,我必须绕过“ Allow Origin ”的问题:我加载其他域的内容在iframe ,我必须从我的域下载的JavaScript操纵其内容。 我的第一个尝试是自己编写一个简单的代理,通过一个以Java编码的服务器代理来请求其他域的页面,它不仅服务于内容,而且还重build内容中的链接(src和href),以便这些链接所引用的内容得到通过我的手工代理下载。 结果是不错,但在css和脚本中的URL的问题。 那么,我意识到mod_proxy_html应该完成所有这些工作。 问题是,我不知道如何使其按预期工作。 让我们假设我的服务器运行在my-domain.com,并代理和转换来自另一个域的内容我会提出这样的请求: my-domain.com/proxy?url=http://another-domain.com/some/content 我希望mod_proxy_html提供内容,并通过以下方式在http://another-domain.com/some/content中重写以下URL: 不是来自another-domain.com绝对url:不重写 相对于根url: /other/content – > /proxy?url=http://another-domain.com/other/content 相关url: other/content – > /proxy?url=http://another-domain.com/some/content/other/content 相对于父url: ../other/content – > /proxy?url=http://another-domain.com/some/other/content 该url应该在运行时指定,而不是configuration时间。 这可以通过mod_proxy_html来实现吗? 任何人都可以提供一个简单的工作configuration开始? 编辑1-第一种方法 下面的网站configuration可以正常使用绝对url的网站,比如http://www.huffingtonpost.es/ 。 你可以试试这个configuration在本地主机上: http://localhost/asset/http://www.huffingtonpost.es/ <VirtualHost *:80> ServerName localhost LogLevel debug ProxyRequests off RewriteEngine On RewriteRule ^/asset/(.*) $1 [P] ProxyHTMLURLMap $1 /asset/ <Location […]

使用nginx负载均衡服务器重复POST请求(状态499)

双重上传 自从我们从一个简单的Apache实例转到一个负载均衡的环境之后,有时POST请求会重复出现问题。 我们运行nginx作为反向代理。 静态内容由nginx自身提供,dynamic内容由两个Apache后端提供。 我检查了它不是一个接口/用户错误。 一个小例子:一个简单的图片上传将导致图片上传两次。 请求/ POST不会通过双击或用户失败发送两次。 我还没有find任何证据表明浏览器发送请求两次,所以我怀疑是在服务器端。 (请注意,这只是怀疑。)这些请求中的大多数是内部的,这意味着它们来自员工,所以我可以validation它们是如何发生的。 我唯一能find的错误是nginx会在这些情况下logging一个499错误。 但是,我不确定这是问题的原因还是(侧面)影响。 (我知道499不是默认的http状态,这是一个nginx状态,意思是“客户端已经closures了连接”) 要求 重复的POST请求几乎是所有可能需要一段时间的请求。 我在这里展示的一个例子是一个简单的图片上传,但脚本在后台做了一些东西(图片必须被转换成不同的格式/大小,并且应该分发到两个服务器等)。 日志 一个例子是上传图片。 nginx会logging一个'499'和一个200请求,但是Apache正在接收(和处理!)两个请求。 阿帕奇 [17:17:37 +0200] "POST ***URL** HTTP/1. 0" 200 9045 [17:17:47 +0200] "POST ***URL** HTTP/1. 0" 200 20687 nginx的 [17:17:47 +0200] "POST ***URL** HTTP/1.1" 499 0 [17:17:52 +0200] "POST ***URL** HTTP/1.1" 200 5641 猜疑 在我看来,更大/更慢的上传遭受这个更多,所以我怀疑超时。 我试图读到499错误:结论似乎是“客户端closures”。 在后台可能会出现这种情况,但我不确定这是否意味着应该发出第二个请求,并且确实没有像“用户closures的浏览器”这样的事情发生。 […]

选项ExecCGI在这个目录中是closures的:/var/www/index.py

我已经看了很多类似的问题,但似乎没有为我工作的职位 我有以下/etc/apache2/httpd.conf文件: <Directory /var/www/index.py> Options +ExecCGI </Directory> <Directory /var/www> Options +ExecCGI AllowOverride None Order allow,deny Allow from all AddHandler cgi-script .py DirectoryIndex index.py </Directory> <Directory /var/www/tiles> AddHandler mod_python .py PythonHandler TileStache::modpythonHandler PythonOption config /home/TileStache/tilestache.cfg </Directory> 当我尝试访问主页为:只是主机名: http : //exampleHost.com我在错误日志上得到以下错误: Options ExecCGI is off in this directory: /var/www/index.py 但是当我去http://exampleHost.com/index.py它工作正常。 所以我猜是重写/ var / www目录? 我没有/ var / […]

strace显示很长时间从MySQL套接字读取 – MySQL需要很长时间来执行查询?

我的Apache服务器需要很长时间来处理请求。 我附上strace它可以看到下面两个延迟: 1)非常关键(143秒处理) 1335 0.000037 write(16, "\235\0\0\0\3INSERT INTO `br_anonymous_user_tokens` (`dtExpires`, `nmToken`, `dtCreated`) VALUES ('2014-08-25', '46e35dc39a41e836b806f48d21621b066ea182a9', '2014-06-25')", 161) = 161 1335 0.000111 read(16, "\t\0\0\1\0\1\374\262\n\2\0\0\0", 16384) = 13 1335 143.588134 gettimeofday({1403675497, 653337}, NULL) = 0 文件描述符#16似乎是mysql套接字: line from strace 1335 0.000328 socket(PF_LOCAL, SOCK_STREAM, 0) = 16 和这里 pidof mysqld 15393 lsof -p 15393 mysqld 15393 mysql 12u […]

无缝SSO与Kerberos,IE浏览器,Firefox,LDAP活动目录

Alias /students /var/www/students <Location /students> KrbServiceName HTTP KrbMethodNegotiate On KrbMethodK5Passwd On KrbSaveCredentials off KrbAuthRealms DOMAIN.LOCAL Krb5KeyTab /etc/httpd/keytab KrbAuthoritative off AuthType Kerberos AuthName "Please Login" AuthBasicProvider ldap AuthzLDAPAuthoritative on AuthLDAPURL "ldap://dc.domain.local:389/OU=Domain Users,DC=domain,DC=local?userPrincipalName?sub?(objectClass=*)" AuthLDAPBindDN "CN=ldapsearchuser,CN=Users,DC=domain,DC=local" AuthLDAPBindPassword ldapsearchuserpass require ldap-group CN=Students,CN=Users,DC=domain,DC=local require ldap-group CN=Staff,CN=Users,DC=domain,DC=local </Location> 这允许所有属于学生/职员AD组的成员的用户访问http:// intranetsite / students后面的页面,而不必指定login凭证,只要他们的IE / Firefoxconfiguration正确。 使用userPrincipalName而不是sAMAccountName,因为kerberos模块正在将用户名@ REALM传递给ldap模块。 现在我遇到了这样的问题,如果有人没有被授权,他们会得到: 需要授权此服务器无法validation您是否有权访问请求的文档。 要么提供了错误的凭据(例如错误的密码),要么您的浏览器不知道如何提供所需的凭据。 有谁知道如何让它popup一个用户名/密码对话框,以便他们可以尝试备用凭据? 获得授权失败后,我可以要求凭据的唯一方法是清除我的caching。 […]

如何去扩展一个Web应用程序?

我主要是一个Web应用程序开发人员,对扩展/可伸缩性技术我不太了解。 我的应用程序是用Python编写的,使用Django; 一个相当标准的设置。 我目前使用Apache 2.2作为我的networking服务器,MySQL使用我的数据库服务器; 两个在同一个VPS上运行。 到目前为止,它基本上是一个原型,在任何时候只有15-30个并发用户。 所以我没有问题,但现在,因为我们将增加更多的用户,我们将有性能问题。 所以我的问题是如何去扩展我的networking应用程序? 我目前的计划如下: 现在我只有一个vps服务器运行,Apache + MySQL。 接下来,我打算添加另一个vps服务器,只运行MySQL,所以我将有一个networking服务器和一个数据库服务器。 接下来,我将添加memcache到networking服务器来caching数据,以减轻MySQL的负担。 接下来,另一个Web服务器为所有静态内容提供服务。 接下来,一个用于负载平衡的VPS服务器(nginx / varnish)将成为我的两个Web服务器,然后是db-server。 这听起来像一个可行的战略? 请引导我在这里。

我怎样才能更新我的PHP DOCUMENT_ROOTvariables从VirtualDocumentRoot

我在我的虚拟主机configuration中使用VirtualDocumentRoot。 我的VirtualDocumentRoot设置为/ var / www /%1 /,如果我创build一个文件夹说testing,它按预期工作。 问题是,当我在我的php文件中使用$ _SERVER [“DOCUMENT_ROOT”]时,它正在重新调用/ var / www。 是否有可能让PHP返回$ _SERVER [“DOCUMENT_ROOT”]在VirtualDocumentRootconfiguration相同的path。

发现Web服务器漏洞

我们运营一个托pipe大约300个网站的网站服务器。 昨天早上,一个脚本在大多数(但不是全部)站点的document_root下的每个目录中都放置了.htaccess文件,这些文件由www-data(apache用户)拥有。 .htaccess文件的内容是这样的: RewriteEngine On RewriteCond %{HTTP_REFERER} ^http:// RewriteCond %{HTTP_REFERER} !%{HTTP_HOST} RewriteRule . http://84f6a4eef61784b33e4acbd32c8fdd72.com/%{REMOTE_ADDR} 谷歌search该url(这是“杀毒软件”的md5哈希),我发现这一切都发生在互联网上,并正在寻找已经处理这个问题的人,并确定漏洞是在哪里 。 我搜查了大部分日志,但还没有发现任何结论。 有没有其他人经历过比我更深入的洞察? 到目前为止我们已经确定: 所做的更改是作为万维网数据,所以Apache或它的插件可能是罪魁祸首 所有的改变都是在15分钟内完成的,所以可能是自动的 由于我们的网站域名广泛不同,我认为一个网站上的单个漏洞是负责任的(而不是每个网站上的常见漏洞) 如果一个.htaccess文件已经存在,并且可以通过www-data写入,那么脚本就很实用,并且简单地将上面的代码行附加到文件的末尾(使其易于反转) 任何更多的提示将不胜感激。 == ==编辑 对于那些需要它的人,这里是我用来清理.htaccess文件的脚本: #!/bin/bash PATT=84f6a4eef61784b33e4acbd32c8fdd72.com DIR=/mnt TMP=/tmp/`mktemp "XXXXXX"` find $DIR -name .htaccess|while read FILE; do if ( grep $PATT "$FILE" > /dev/null); then if [ `cat "$FILE"|wc -l` -eq 4 ]; […]

为什么我有这么多的apache2进程?

我有一台运行GNU / kFreeBSD 8.1-1-amd64和Apache的Debian 6.0.1机器。 我使用apt-get安装了apache2-mpm-worker ,并且我的apache2.conf文件包含: <IfModule mpm_prefork_module> StartServers 4 MinSpareServers 2 MaxSpareServers 5 MaxClients 150 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_worker_module> StartServers 1 MinSpareThreads 2 MaxSpareThreads 20 ThreadLimit 64 ThreadsPerChild 20 MaxClients 100 MaxRequestsPerChild 400 </IfModule> 所以我应该只看到几个Apache进程在运行。 然而,它看起来更像是我正在运行的prefork,因为而不是许multithreading我似乎有很多进程: root@garrison:/# ps awwwwx | grep apache 78438 ? S+ 0:00 grep apache 78424 ? S 0:00 […]