Articles of Web服务器

谁能依靠Apache清理URL?

我使用默认安装中的mod_wsgi设置了Apache,使用一个非常简单的testing应用程序test.wsgi : def application(environ, start_response): status = '200 OK' output = 'Path: %s' % environ['PATH_INFO'] response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output] Apache本身基本上是这样configuration的: WSGIScriptAlias / /home/user/wsgi_test/test.wsgi 现在,如果我访问该服务器上的URL,我得到以下输出: GET /test/../test/./test => Path: /test/test GET /test/%2E%2E/abc => Path: /abc GET /test%2fabc => 404 Not found (由于AllowEncodedSlashes off ,我想) 因此,在我看来,Apache在将这些URL传递给应用程序之前parsing/预处理这些URL,这很好,因为它可以防止文件path不属于查询string的大量本地文件包含和目录遍历攻击。 一个人可以依靠这种行为,或者有一些/test/foo/../bar方法来欺骗Apache实际上传递像/test/foo/../bar的URL到应用程序? 如果可能的话,它会是一个Apache的bug吗?

端口80上的多个Tomcat服务

我有一个Tomcat服务器,我想运行多个webapps每个不同的域名。 鉴于下面的configuration,我想能够连接到http://webapp1并获得其webapp和http://webapp2并得到那一个。 目前当我用这个configuration启动tomcat时,它抱怨在端口80上有多个绑定(我认为在给出不同的域的时候不会有问题),当我尝试访问它们中的任何一个时,不pipe我input的域是什么第一个webapp。 我如何才能按照我的意图来工作? <?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="SERVICE_WEBAPP1"> <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" compression="on" address="webapp1" /> <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" […]

Amazon EC2中的区域之间的随机超时?

我遇到了EC2中两个实例之间的tcp连接问题。 起初我以为是我使用的工具(JRuby on Rails stack + MongoDB),当我在代码中看到以下exception时: A Mongo::OperationFailure occurred in foo#bar: Mongo::OperationFailure .bundle/jruby/1.8/gems/mongo-1.6.2/lib/mongo/util/tcp_socket.rb:76:in `read' 所以认为这是一个软件问题,我没有来到ServerFault。 我认为JRuby中的IO类在经过一些研究之后可能会被淘汰,但这并不准确。 我继续安装Ruby 1.9.3,并将整个堆栈移到它。 果然,过了一段时间,类似的例外就出现了: A Errno::ETIMEDOUT occurred in anotherfoo#anotherbar: Connection timed out mongo (1.6.2) lib/mongo/util/tcp_socket.rb:70:in `readpartial' 我来到服务器故障的原因是因为我相信这可能是亚马逊的基础设施的一些区域间超时问题,我想知道是否有任何可以validation或给我的build议,如何进一步debugging,因为我用尽了解决scheme。 我的应用程序服务器在我们东 – 1a。 mongodb服务器位于us-east-1c。 也许这可能是一个原因? 为什么我可以打赌使用默认的Amazon Linux AMI(64位,XLARGE)来获取这些超时?

启动cassandra布局

我们在单个服务器上托pipe的stream量较低的站点(每天约1千次的浏览量),并预计在未来几年内会大幅增长。 我正在考虑转移到Rackspace CloudServer或EC2并启动3个节点(全部在CentOS上): 2个Web(Apache) – 带负载均衡器 1个MySQL(用于Wordpress动力部分) 问题是现在把Cassandra放在哪里 它应该坐在每个Web节点还是MySQL节点上? 我现在的想法是把它放在Web节点上。 我的理解是,Cassandra具有容错的好处(即,如果我们取下一个节点,则该网站仍在运行)。 因此,即使只有2个节点,我们也能获得这种好处,而不是把它放在MySQL节点上。 另外,当我们扩展并添加另一个节点时,一个cassandra实例可以和它一起,并且PHP总是可以在本地主机上运行它的查询。 这是一个好主意吗?

以人为的方式logging报告

我目前正在研究我们的IT系统来改进一点。 我已经在我们的服务器(物理和虚拟机)上安装并运行了一个rsyslogd,所有这些服务器现在都将他们的日志发送到数据库中。 现在,我可以要求这个数据库能够在整个系统上快速有效地find任何types的问题或信息,但是对于我来说,这仍然是一个“问题”,即将所有这些信息以我的经理和其他所有技术人员的方式进行。 我想知道如果他们是一个networking应用程序能够做的伎俩,但令人惊讶的是,我一直没能find一个谷歌。 所以问题是,你知道一个webapp的名字,它能够parsing和报告我的日志托pipe在数据库上的所有日志吗? Wahoo,感谢你们所有人为这些惊人的解决scheme。 我看看这一切,我必须说,splitting和greylog2似乎是最适合我的需求:D 非常感谢,我现在必须做一些POC:D

只用PHP进行PHP / MySQL性能testing

我试图诊断一个服务器的网站加载非常缓慢,但不幸的是我的客户端只提供了我的FTP访问。 我有FTP访问,所以我可以上传PHP脚本,但不能设置任何其他服务器端工具。 我有权访问phpMyAdmin,但不能直接访问MySQL服务器。 这也是一个不幸的Windows服务器(我们已经是一个Linux商店十多年了)。 所以,如果我想在通用服务器上通过PHP来评估MySQL和磁盘速度性能,那么最好的办法是什么? 已经有工具,如: https : //github.com/raphaelm/php-benchmark或https://github.com/InfinitySoft/php-benchmark 但是我很惊讶没有人已经build立和configuration了一些服务器的响应能力。 每次我们评估一个新的服务器环境时,都可以快速比较一下现有的服务器环境,以查看是否有任何exception情况。 我想我只是希望别人已经写了一个脚本来做到这一点。 我知道我有,但那是在Github之前,当时有一个方便的地方可以发布这样的代码。 最初张贴在https://stackoverflow.com/questions/12321498/php-mysql-performance-testing-with-just-php,但build议我重新发布在这里。

从日志文件中读取什么后果?

自从几个星期以来,我pipe理我的第一个Web服务器,一个在Linode上的Apache代理背后的Seaside应用程序,并且我安装了logwatch来发送每日日志。 我在哪里可以得到有关什么时候必须采取行动的信息? 例如,我读了各种各样的人尝试login在有趣的不存在的帐户或各种webcrawlerstesting非现有的cmslogin页面,一些ip地址被禁止和unsbanned fail2ban … 我认为这是正常的? 是吗? 但是,我怎么知道我可能要做点什么呢? 我在日志中寻找什么?

在哪里放置使用快照备份根EBS卷的脚本

我有这个从http://aws-musings.com/manage-ebs-snapshots-with-a-python-script/ 我想将EC2实例的根EBS卷备份到EBS快照中。 我想我不应该把脚本放在根EBS卷本身的任何地方(我想知道脚本如何备份包含脚本本身的东西)。 我有另一个EBS卷挂载到我的服务器中的/mnt/data/目录。 我可以把我的备份脚本放在/mnt/data/目录吗? 如果没有,我应该把它放在哪里? 我认为以下可能是相关的,虽然我有限的Linux知识阻止我从中得到任何东西: 在哪里把我的backup.sh? 希望你们中的一些人能够帮忙

使用Nginx和PHP-FPM时,我得到一个400错误的请求错误,为什么?

我试图运行一个网站(这需要PHP – 目前在技术上不需要MySQL,但在不久的将来可能会有一段时间,因为我继续开发它,所以我继续安装,以及)使用nginx 1.2 .4和Ubuntu 12.04.1 LTS上的PHP-FPM 5.3.3。 据我所知,我没有做错任何事情,但显然有些事情是不正确的 – 每当我尝试浏览我的网站时,我似乎都会收到400错误的请求错误。 我主要是遵循一个指南,我已经做了或多或less的build议,除了没有设置PHP-FPM使用Unix套接字和我使用service而不是/etc/init.d/在启动时/停止nginx,PHP和MySQL。 无论如何,这里是我的相关configuration文件(我只有审查个人/敏感的细节,如我的域名 – 其中包含我的真实姓名): /etc/nginx/nginx.conf user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 15; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect […]

我应该使用哪个用户帐户进行Intranet Web应用程序服务?

我写了一个web应用程序在Windows(XP,7,2008等)上运行,而不是使用MS工具(python / django / nginx,尽pipe它不应该)。 要运行应用程序,我创build了一个安装并运行正常的Windows服务。 但是,应用程序将在安全性很重要的环境中运行。 默认情况下,服务安装在Local System帐户下运行,我知道这个帐户是完全控制计算机的。 听起来不是一个好主意。 我也见过使用Network Service但描述往往谈论域名等。 这个应用程序使用networking,并在Windows上运行,但不会说“Windows”,如果有的话。 它是自包含的,并将其数据保存在“通用应用程序数据文件夹”中,即…\All Users\Application Data 。 我应该使用Network Service吗? 我应该创build自己的帐户吗? 在UNIX上,我会,但不知道在Windows上的“陷阱”。 将更容易使用现有的帐户。