Articles of apache 2.2

如何使用Apache mod_proxy将代理特定的端口逆向转换到防火墙后的另一台服务器

我有两个Web服务器,一个Apache 2和另一个IIS 8,都在防火墙后面的局域网中。 我在防火墙上打开了端口80,443和8080-8088。 我有一个指向我的防火墙的外部托pipe的DNS Alogging,以及将这些端口redirect到Apache服务器的防火墙规则。 我还在局域网上有一个DNSlogging,将Alogging指向防火墙内的本地地址。 (即在防火墙外,www.example.com指向1.2.3.4,但在同一地址指向192.168.1.1)。 我希望将Apache服务器上的端口8080-8084redirect到IIS服务器,其余的端口(80,443,8085-8088)正常处理。 所有的stream量都是HTTP(或者将来可能需要HTTPS),所以即使端口号是非标准的,所有的stream量都是正常的网站的东西。 例如,我们假设如下: 公共主机名:www.example.com 公共IP地址:1.2.3.4 Apache服务器的LAN主机名(www.example.com指向的地方):apache.example.local 局域网上Apache服务器的IP地址:192.168.1.1 IIS服务器的局域网主机名(不能从局域网外访问):iis.example.local 局域网上IIS服务器的IP地址:192.168.1.2 我试图为这些场景设置一个代理规则: h ttp://www.example.com/指向Apache的默认网站( apache:80 / )。 h ttps://www.example.com/指向Apache的SSL网站( apache:443 / ) h ttp ://www.example.com: 8080 /点到IIS默认网站( iis:80 / ) h ttps ://www.example.com: 8080 /点到IIS的SSL网站( iis: 443 / ) – 我想不出如何做到这一点,所以我指出了这个问题:http://www.example .com: 8083 / ,虽然我宁愿按预期工作 h ttp://www.example.com:8081 / wiki […]

通过SSPI + CGI Perl检索Windows用户名

当他访问我的内部网页时,我需要检索当前login的Windows用户的用户名。 我正尝试在Windows Server 2008上使用SSPI(mod_auth_sspi.so)和Apache 2.2来validation我的网页。 我已经对httpd.conf文件进行了以下更改,并将我的Intranet站点添加到浏览器设置上的受信任站点。 我的网页是在Perl中,正在使用CGI.pm。 我尝试通过$ cgi-> user_name()和$ cgi-> remote_user()检索用户名,并检查REMOTE_USER和AUTH_USER cgi ENVvariables以获取用户名。 <IfModule !mod_auth_sspi.c> LoadModule sspi_auth_module modules/mod_auth_sspi.so </IfModule> <Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/TestWeb/"> <Files Test.pl> AuthName "TestWeb" AuthType SSPI SSPIAuth On SSPIAuthoritative On SSPIOfferBasic Off Require valid-user SSPIDomain domain name </Files> </Directory> 更改后我重新启动了Apache。 我没有看到cgi环境variables来获取环境variables中的用户标识符。 我已经search了同一个论坛和其他人,这就是他们已经完成的工作。 我错过了什么吗? 感谢任何帮助。 谢谢

给PHP一个假的请求URL和协议与Apache2和mod_php

我与多个用户运行一个Web服务器。 该机器提供基于Apache的虚拟主机给一群可以提供静态内容或使用PHP的用户。 没有其他forms的服务器端脚本可用。 以下是典型请求的处理方式: HTTPSstream量由Pound剥离SSL,作为反向代理,将请求转发给Varnish,Varnish也充当反向代理,最终将请求转发给Apache。 当HTTPSstream量到达Apache时,协议,端口和完整URL已经从https://example.com:443/更改为http://example.com:8443/ 。 这是Apache之前的所有代理的结果。 有没有一种方法可以欺骗PHP脚本,认为请求来自原始URL,端口和协议, 而无需修改PHP代码 ? 这一点非常重要,因为用户希望运行Joomla,WordPress以及其他基于PHP的CMS,这些CMS可以检测URL并为redirect,链接等造成麻烦。 我可以修补mod_php并从源代码构build它,并对我的特定场景进行必要的更改,但是有没有更好的方法来给PHP脚本伪造环境variables,也许通过php.ini中的某些设置?

“ajp_read_header:ajp_ilink_receive失败”

我们在Tomcat 7.0.33之前有Apache 2.2.24。 我们使用APR / nativeconfiguration的AJP连接器。 我最近注意到Apache访问日志中有500个错误,对一个特定资源的一小部分(0.3%)请求。 对于这500个响应中的每一个,Apache错误日志中都有一对相应的错误行 [Wed Mar 06 04:07:42 2013] [error] ajp_read_header: ajp_ilink_receive failed [Wed Mar 06 04:07:42 2013] [error] (70007)The timeout specified has expired: proxy: read response failed from (null) (*) logging错误的时间在logging请求的时间之后5:06和5:07分钟之间。 匹配设置的Timeout 300指令。 没有任何东西logging在Tomcat的访问日志,所以我假设请求永远不会到达那里。 据推测,资源存在一些性能问题(它进行了数据库更新,负载相当高),但我更关心的是了解Apache和Tomcat之间的通信。 在什么时候请求超时? (连接,阅读等) 我有什么select来监控ajp连接的数量? 我有什么选项来configurationApache和Tomcat来改善这种情况 Apache使用带有[proxy,last]标志的重写规则进行configuration。 Tomcat连接器看起来像 <Connector port="8014" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> 就像我之前所说的,我将分别解决Tomcat资源上的瓶颈问题。

从PHP执行一个python脚本来打开一个套接字

我有一个python脚本chatserver.py包括: – #!/usr/bin/python from twisted.internet.protocol import Protocol, Factory from twisted.internet import reactor <SNIP> reactor.listenTCP(3800, factory) print "Server Started" reactor.run() 这将在端口3800上打开一个套接字,如果我从SSH启动,但是我想检查打开的端口,并且如果closures,请使用PHP重新打开,但似乎无法执行python脚本。 这是我现在通过PHP调用它的方式 function serverCheck() { $host = "MYHOST"; $port = 3800; $connection = @fsockopen($host, $port); if ( !is_resource($connection) ) { // port not open exec('/var/www/vhosts/httpdocs/chat/chatserver.py',$output); var_dump($output); if($connection) fclose($connection); } } 我已经尝试了很多我在search中find的东西,但是我似乎无法获取要执行的文件。 一个不错的人正在帮助我,但无法找出答案,所以redirect到这里。 我的文件是正确的chmod和function“serverCheck”100%被打,但python脚本似乎永远不会被执行!

为网站添加第二台文件服务器

我运行一个网站,其中包含大量的大文件,即使购买了我的主机在单个服务器上提供的最大空间量(8x2TB驱动器),我现在磁盘空间不足。 我想添加第二个服务器纯粹用于存储和提供文件。 我的问题是这样做的最佳做法是什么? 使用NFS挂载新服务器是一种方法。 另一种方法是重写我的应用程序,以利用多个服务器,但这是很多工作。 有没有一种简单的方法将底层存储与Web服务器隔离开来,这样对于Web服务器来说,它们都显示为单一path,但实际上是分布在多个服务器上的? 我的操作系统是Linux CentOS,我的服务器是Apache。 请注意,我面临的唯一问题是磁盘空间,而不是带宽或CPU等。我不需要负载平衡stream量,只增加更多的空间。

小型专用plesk centos5服务器的性能问题

我得到了一些相当严重的性能问题,我的plesk 11专用盒,它有8演出的内存,静态页面加载速度非常快,第一次的时间less于0.5秒,但dynamicPHP文件,包括只是一个PHP信息可以采取1(直接在httpd重启之后),第一个字节为10秒。 我一直在用WebPagetest.org测量性能 服务器运行1个站点,每月4000个访问者,不应该有任何实际的负载。 PHP作为CGI运行 inheritance人prefork的httpdconfiguration <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 1000 </IfModule> 此外,日志文件填充此 [Tue Apr 09 05:58:23 2013] [warn] mod_fcgid: process 4435 graceful kill fail, sending SIGKILL [Tue Apr 09 05:58:55 2013] [warn] mod_fcgid: process 4466 graceful kill fail, sending SIGKILL [Tue Apr 09 05:59:11 2013] […]

在Windows中设置Apache HTTP服务器作为代理访问另一个域

我知道这应该是非常基础和理论上的简单,但我需要完成这个任务,我是新来的,由于某种原因,我找不到一个适合我的例子。 我在Windows 8中运行apache 2.2。我需要访问一个网站,让我们称之为x.com,通过我的代理。 原因是我需要在iframe中显示它,并以编程方式login,为此我需要使用JavaScript。 这是通过跨域的Ajax安全限制来防止的。 通过代理网站,我可以做到这一点。 我已经安装了Apache http服务器。 取消注释以下行 LoadModule proxy_module modules/mod_proxy.so 在文件“httpd.conf”中,并用以下命令覆盖文件conf \ extra \ httpd-vhosts.conf: NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host.localhost" ServerName 127.0.0.1:80 ProxyRequests off ProxyPass /feature http://x.com/ ProxyPassReverse /feature https://x.com/ ProxyPassReverseCookieDomain x.com localhost ErrorLog "logs/dummy-host.localhost-error.log" CustomLog "logs/dummy-host.localhost-access.log" common <Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host.localhost"> AllowOverride […]

Apache DNS转发终于正常工作,但有些域正在parsing为VPS IP地址

我有一个Linode VPS和1&1有我的域名。 我终于把所有的url都指向了我的服务器,并显示了正确的内容,但是我的三个域名中只有一个是把它的url保存在地址栏中。 另外两个是parsing到一个IP地址(所以我把example.com,它显示正确的内容,但切换到xxxx)。 正在工作的是子域,如果这很重要(foo.example.com)。 什么会导致这种情况发生。 我不确定在哪一个阶段这是全部崩溃。 我有1&1指向的DNS到Linode的DNS服务器(ns1.linode.com,ns2.linode.com等),我已经用Linode的DNSpipe理器设置它们。 我也有configuration在我的Apache网站 – 可用/网站 – 所有三个启用。 任何想法发生了什么? 谢谢。 如果需要,我可以提供更多信息。

在apache httpd.conf中发出设置环境variables

我想弄清楚为什么我可以使用SetEnv在httpd.conf中设置string字面值: SetEnvIf anothertest ^$ something=sometext 但是我不能指定另一个variables的内容: SetEnvIf anothertest ^$ something=$QUERY_STRING 第二个导致$ QUERY_STRING而不是取消引用variables。 更新: 上面的代码是一个解决我遇到的问题的尝试。 最终目标是让SetEnvIf工作,以便我可以使用Access-Control-Allow-Origin来设置多个域。 我试图将其设置为域https://localhost:8443和https://10.1.40.75:8443 。 下面是我目前没有工作的代码。 <ifModule mod_headers.c> SetEnvIf Origin "^http(s)?://(.+\.)?(localhost:8443|10\.1\.40\.75:8443)$" origin_is=$0 Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is Header set Access-Control-Allow-Credentials true </ifModule>