更新:我添加了一个修改后的问题后,下面两个答案。 你好, 如果你正在阅读,你可能对Apache的mod_proxy及其ProxyPass函数很熟悉。 像其他许多人一样,我有一个可以从内部networking外部访问的应用程序的问题,但是应用程序本身可以访问不同计算机上的其他内部应用程序,并且当您使用此设置进行远程访问时,情况会变得糟糕透顶。 所以,我的设置很简单,我有: 机器#1启用了远程访问,我通过主机名访问它,并且吐出运行在其上的PHP应用程序。 机器#2是一个运行Django的新应用程序,它使用了一个完全不同的后端(甚至authentication),它被托pipe在一个单独的机器上。 在我们的内部网中,我们通过一个简单的命名主机名来访问它,它主要链接到内部的192.168.0.101 ip。 我尝试使用ProxyPass来设置它,例如,传递给/ new将把它发送到新的应用程序: ProxyPass /新http://192.168.0.101/ 这种工作,它获取到其他应用程序的请求,但它打破了,因为我的Django应用程序想redirect到/ auth / login /,它立即无法识别。 如果我自己修改url为foo.net/new/auth/login我得到我的login页面,但是正如你所猜测的,在整个浏览过程中这样做是不方便的。 那么我怎样才能让ProxyPass按照我的意愿工作呢? 我是否需要对Apache做些什么,所以它总是写入/新的URL在其他应用程序之前,或者这是我应该在我的Django应用程序中修改? 任何提示和指针,以及将不胜感激。 谢谢你的时间
我在开发机器上用mod_rewrite设置Apache时遇到了麻烦。 Mod_rewrite是活动的,并且对于一些规则来说工作得很好。 有些规则不能像预期那样工作,就像这样: RewriteRule ^static/([^/]+)/([^/]+) /static.php?sISOCode=$1&sPage=$2 在static.php我这样做(debugging): <?php print_r($_GET); print_r($_POST); print_r($_SERVER); die(); 打印(从$ _SERVER数组中删除一些项目): Array ( ) Array ( ) Array ( [SERVER_SIGNATURE] => <address>Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch Server at alpha.prove.no Port 80</address> [SERVER_SOFTWARE] => Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch [SERVER_ADDR] => 127.0.0.1 [SERVER_PORT] => 80 [REMOTE_ADDR] => 127.0.0.1 [DOCUMENT_ROOT] => /home/veg/workspace/project [SERVER_ADMIN] => […]
我在这个服务器上运行Ubuntu 8.04。 我通过包pipe理器安装了PHP 5.2。 我删除它手动安装PHP 5.3.1。 我像这样构build了包 ./configure –prefix=/opt/php –with-mysql –with-curl=/usr/bin –with-apxs2=/usr/bin/apxs2 make make install 这安装了PHP 5.3.1在/ opt / php / $ php -v PHP 5.3.1 (cli) (built: Dec 7 2009 10:51:14) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies 然而,当我尝试启动Apache我得到这个。 # /etc/init.d/apache2 restart * Restarting web server apache2 […]
我有一个很大的VirtualHost定义,我不想重复,所以网站也将通过HTTPS运行。 这是我想要做的: <VirtualHost *> ServerName example.com <If port=443> SSLEngine on SSLCertificateFile … SSLCertificateKeyFile … SSLCertificateChainFile … </If> (other config) </VirtualHost> 有没有办法做到这一点? 我是否缺less一些不重复configuration的其他方法?
我在一台Apache服务器上为我的客户端托pipe了大约300个域名。 他们都没有太多的stream量,所以服务器负载不是问题。 从理论上讲,服务器上可以有多less这样的低stream量域名应该是没有限制的,但是我担心如果服务器上有太多的域名,那么检查每个传入请求的纯粹的域名列表将会使Apache下。 有一个经验法则Apache的configuration可以多久,它可以处理多less个不同的领域没有问题? 500好吗? 5000? 澄清:我不问一个服务器可以处理多lessstream量。 我知道这个特定的服务器可以处理至less两倍的当前stream量。 我想知道域的数量是否是一个关键因素。
前段时间我已经安装了Apache,快速浏览一下我的access.log,发现各种未知的IP地址都是连接的,主要是状态码403,404,400,408。我不知道他们是怎么find的我的知识产权,因为我只使用它的个人使用,并添加了一个robots.txt希望它会保持search引擎。 我阻止索引,没有什么真正重要的。 这些机器人(或人)如何find服务器? 这是常见的事情发生吗? 这些连接是危险的吗?我能做些什么? 另外,许多IP来自各种国家,不parsing主机名。 以下是一些例子: 在一个大扫描,这个机器人试图findphpmyadmin: "GET /w00tw00t.at.blackhats.romanian.anti-sec:) HTTP/1.1" 403 243 "-" "ZmEu" "GET /3rdparty/phpMyAdmin/scripts/setup.php HTTP/1.1" 404 235 "-" "ZmEu" "GET /admin/mysql/scripts/setup.php HTTP/1.1" 404 227 "-" "ZmEu" "GET /admin/phpmyadmin/scripts/setup.php HTTP/1.1" 404 232 "-" "ZmEu" 我得到了很多这些: "HEAD / HTTP/1.0" 403 – "-" "-" 大量的“proxyheader.php”,我得到了很多GET请求http://链接 "GET http://www.tosunmail.com/proxyheader.php HTTP/1.1" 404 213 "-" "Mozilla/4.0 (compatible; MSIE 6.0; […]
我正在考虑一个新的Web服务器的体系结构。 将Varnish作为Nginx之前的caching作为反向代理,并在apache之前为静态文件提供静态文件是一个好主意? 我要在rails应用程序上运行php和ruby。 会有太多的开销通过PHP请求通过其他两个进程的Apache? 非常感谢!
我必须在我的CentOS服务器上安装PHP 5.3。 如果我做yum install php ,那么基本仓库会安装5.1.6,这对于我需要安装的应用程序来说太旧了。 所以我一直在尝试使用IUS存储库,遵循IUS的官方指示: root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-2.ius.el5.noarch.rpm root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm root@linuxbox ~]# rpm -Uvh ius-release*.rpm epel-release*.rpm 好。 现在我只需要yum install php53等,我需要的所有…但我得到这个错误: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Check Error: file /usr/bin/php from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts with file from package php-cli-5.1.6-27.el5_5.3.x86_64 file /usr/bin/php-cgi from install of php53u-cli-5.3.4-3.ius.el5.x86_64 conflicts […]
我目前有一个运行在mpm-prefork和mod_php上的带有512M真实/ 1024M可突发RAM(无交换)的OpenVZ VPS的Apache2服务器。 运行一些testing后,我发现Apache获得的最大进程大小是23M,所以我将MaxClients设置为25(23M x 25 = 575 MB,对我来说可以)。 我决定在我的服务器上运行一些负载testing,结果让我感到困惑。 我在我的台式机上使用ab ,要求wordpress博客的主页面。 当我用24个并发连接运行ab时,一切似乎都很好。 当然,CPU上升,可用RAM降低,每个请求的结果是大约2-3秒的响应时间。 但是如果我用25个并发连接(我的服务器限制)运行ab ,Apache几秒钟后就挂起了。 它开始处理请求,然后停止响应,CPU回到100%空闲, ab超时。 Apache日志说,它达到了MaxClients 。 当发生这种情况时,Apache保持自己locking了25个正在运行的进程(如果我检查服务器状态,它们都是“W”),并且只有在TimeOut设置进程开始死亡并且服务器再次开始响应之后(在我的情况下设置为45)。 我的问题是那个预期的行为? 为什么Apache在达到MaxClients时候就死了? 如果它与24个连接一起工作,不应该与25个工作,只是采取更多的时间来响应每个请求,其余的排队呢? 这听起来有点奇怪,任何运行ab孩子都可以通过设置与服务器MaxClients的并发连接来杀死一个web服务器。
我最近把一个客户端的网站(使用concrete5 CMS)移到运行Gentoo,Apache 2.2,PHP5和MySQL 5的VPS上,我注意到Apache的响应时间相当糟糕(旧服务器上的响应时间相同) ,有时候可以达到8-9秒,但更多的是在300毫秒到3秒之间(对于300毫秒,我不介意)。 我知道这不是networking延迟,因为服务器的ping(从我的位置)大约30ms。 下面是一个时间的例子(你可以看到它在最初的等待之后很快): 我正在运行APC(虽然我不确定这是否正确) …和SuExec。 Apache模块是: core_module (static) authn_file_module (static) authn_default_module (static) authz_host_module (static) authz_groupfile_module (static) authz_user_module (static) authz_default_module (static) auth_basic_module (static) include_module (static) filter_module (static) deflate_module (static) log_config_module (static) env_module (static) expires_module (static) headers_module (static) setenvif_module (static) version_module (static) ssl_module (static) mpm_prefork_module (static) http_module (static) mime_module (static) status_module (static) autoindex_module […]