Articles of apache 2.2

在Apacheconfiguration(httpd.conf)中,多个<Directory>节是如何工作的?

例如,如果我的'/etc/apache2/httpd.conf'如下所示: <Directory /> AllowOverride None </Directory> <Directory /home> AllowOverride FileInfo </Directory> 后面的AllowOverride规则将覆盖/home目录的前任。 那部分是清楚的。 但是,如果我的httpd.conf文件看起来像这样会发生什么? <Directory /var/www/example.com/public> AllowOverride None Options -MultiViews <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / […] </IfModule> […] </Directory> <Directory /var/www/example.com/public/wp-content/cache/minify> <IfModule mod_rewrite.c> # WHY IS 'RewriteEngine On' REQUIRED? RewriteEngine On RewriteBase /wp-content/cache/minify/ RewriteRule […] </IfModule> </Directory> 问题: 是不是在第一个<Directory>部分中的RewriteEngine On也应用于第二个<Directory>部分,考虑到后者是一个子目录? 但是我注意到我需要在第二个<Directory>部分添加RewriteEngine On规则。 这是否意味着我也应该将第一个<Directory>部分的所有常用规则复制到第二个<Directory>部分? 例如, […]

aws amazon linux ami服务httpd重启失败

谢谢你的帮助。 我最近做了以下工作: 在运行Amazon Linux ami的ec2实例上运行sudo yum update 然后,我添加一个虚拟主机到我的vhost.conf一个子域。 虽然服务器仍然可以访问,当我运行sudo httpd restart我收到以下内容: 。 Stopping httpd: [FAILED] Starting httpd: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf.d/vhost.conf:1 (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80 (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80 […]

无法浏览到Apache服务,服务正在运行

概要 我有一个非常奇怪的问题。 我无法打开“It Works!” 使用apache安装新的服务器之后的页面。 我能够ssh到框(从networking外部)。 Apache似乎在我的Centos6.4x86_64框上运行就好了。 在/ var / logs / httpd / *中没有用处。 我错过了什么? 设置 我现在在networking之外。 “服务器”是我的家庭计算机上运行桥接模式的虚拟机。 公共ip:ABCD 主机:192.168.1.5 VM:192.168.1.8 我有一个verizon fios路由器,将端口22,80和8888转发给VM。 我能够ssh通过端口22,但我无法通过端口80浏览到公共URL。所以ABCD:22正在工作,但http:// ABCD:80是不是。 我试过了 nmap来查看它是否正在侦听: nmap -sT -O localhost Starting Nmap 5.51 ( http://nmap.org ) at 2013-10-25 11:10 EDT Nmap scan report for localhost (127.0.0.1) Host is up (0.000040s latency). Other addresses […]

通过ProxyPassMatch作为处理程序转发PHP请求,或者仅在文件存在时转发

我正在迁移我的服务器使用mod_proxy_fcgi和php-fpm而不是mod_php。 Apache能够将.php请求转发到fcgi代理,PHP正确执行。 我有这个工作: ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 不幸的是,即使文件不存在,Apache也会将所有.php请求转发给代理。 这导致一些问题。 我的ErrorDocument规则不会被调用,而DirectoryIndex index.php index.html不会退回到index.html。 我能用mod_rewrite修复这些问题: RewriteEngine On RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$ RewriteCond /var/www/html/%2 -f RewriteRule . fcgi://127.0.0.1:9000/var/www/html/%1 [P] 但是,Apache文档不build议使用RewriteRule :“这是因为这个标志触发了使用默认的worker,它不处理连接池。 理想情况下,我想要在FileMatch块中使用ProxyPass(当前不支持),或者定义一个新的处理程序,通过fcgi代理并使用它来处理.php请求,类​​似于mod_php。 任何build议模拟标准的mod_php设置,但实际上通过fcgi代理?

多重规则Apache重写

我试图用mod_rewritebuild立一个五层深层次结构。 这是我在这一点上所做的。 它适用于最后两个级别(第一个和第二个规则),但不是在那之后。 任何帮助将不胜感激。 RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2&product_category=$3&product_sub_category=$4&product=$5 [C] RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2&product_category=$3&product_sub_category=$4 [C] RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2&product_category=$3 [C] RewriteRule ^([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2 [C] RewriteRule ^([^/]*)$ /mr/index.php?product_group=$1 [L] 我不是一个服务器技术。 我是一个开发人员,只是无法弄清楚这一点。 这些规则中的每一个都能正常工作。 我需要规则从一个层面到五个层面,以及其间的每一个步骤。 我需要深入了解search引擎优化的风格导航。

让PHP使用SPDY?

我最近把我的网站切换到在所有URL中使用HTTPS。 (我的post在这里) 我在Ubuntu 12.0.4上使用PHP运行Apache 有人告诉我,我应该安装SPDY的Apache模块,因为我使用SSL / HTTPS,所以我按照这个网站的指示安装它,它安装没有问题… https://developers.google.com/speed / SPDY / mod_spdy / 我的问题开始于PHP …如果您查看此页面https://developers.google.com/speed/spdy/mod_spdy/php你可以阅读有关使用PHP与SPDY 基本上它说,你需要使用mod_fcgid而不是mod_php 我的服务器目前使用mod_php为我所有的网站运行。 所以我安装了mod_fcgid处理程序,并且安装时没有问题。 问题是当我尝试重新启动Apache。 由于我的Apachconfiguration文件中的内容,事情变得疯狂了。 从我的http.conf文件… <IfModule mod_php5.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_admin_value upload_tmp_dir /var/zpanel/temp </IfModule> 改变上面的mod_php5使用新的mod_fcgid不能解决我的问题,而是说,有像php_flag magic_quotes_gpc Off东西有问题php_flag magic_quotes_gpc Off它出现php_flag是无效的,当使用mod_fcgid ? 对不起,我现在没有确切的错误,因为我已经将我的服务器恢复到mod_php,以便它可以工作。 在我调用mod_fcgidconfiguration文件中的任何地方,似乎都是通过一个错误。 任何想法,我可以得到这个工作?

ApachedynamicIP地址的rewritecond

我想限制通过IP地址访问某一组页面(只有2或3人被允许访问此区域)。 不幸的是,至less有一个是来自ISP的dynamic分配的IP地址。 我考虑过的一个非常冗长的选项是一种自定义的dyndnstypes的设置,其中客户端将注册其IP更改,然后重写apacheconfiguration文件并重新加载它。 鉴于我们有一个dyndns帐户设置,我们总是可以从那里得到他们当前的IP地址,并定期更新/重新载入Apacheconfiguration文件。 但有没有更优雅的方式? 这里是当前行(虚拟ip): RewriteCond %{REMOTE_ADDR} !^12\.23\.34\.45 我也试过: RewriteCond %{REMOTE_HOST} !^name\.dtdns\.net 无论如何,这是一个很长的镜头 – 显然,他们的IP地址永远不会回到这个名字。 我无法访问此服务器上的mod_perl,因此无法在此处执行任何操作。 有另一种方法吗?

如何反向代理原始TCP数据包

我正在devise一个系统,远程设备将状态更新安全地发送到中央日志logging服务器进行聚合。 在服务器上,我使用了Redis + Logstash + Elasticsearch解决scheme。 发送到服务器的数据是敏感的,必须encryption。 我正在努力寻找一种有效和安全的方法来将日志“加载”到Redis列表中。 这些设备目前能够将以下Redis命令直接发送到端口6379。 "*3\r\n$5\r\nLPUSH\r\n$3\r\nkey\r\n$5\r\nvalue\r\n" 正确的密钥和列表条目是在服务器上的Redis中创build的。 下一步是将redis放在防火墙后面并对数据包进行encryption。 我目前的尝试是使用Apache作为反向代理。 设备将与Apachebuild立双向SSL连接,然后使用回送接口将已消耗的信息反向代理到端口6379。 双向SSL连接没有问题,并且将消息转发给Redis。 不幸的是,这不是设备发送的消息。 tcpdump告诉我以下… tcpdump -nnXvv -i lo host localhost and port 6379 127.0.0.1.48916 > 127.0.0.1.6379: Flags [P.], cksum 0xfeab (incorrect -> 0x9415), seq 1:132, ack 1, win 1025, options [nop,nop,TS val 299310518 ecr 299310518], length 131 0x0000: 4500 00b7 12b7 4000 […]

httpd服务没有自动启动

我在RedHat服务器上从源代码编译Apache和PHP,但在这样做的时候,我忘了安装httpd作为服务。 用于编译Apache 2.4.7的文件 用于编译Apache 2.4.7的命令 ./configure –prefix=/etc/apache247 –with-included-apr –with-pcre –enable-so –enable-rewrite=shared –with-layout=Apache –enable-modules=most –enable-mods-shared=all; Apache 2.4.7的目录 init.d脚本启动Apache 2.4.7 我发现这个脚本在stackoverflow。 这不是我的,也不是官方的。 有些用户告诉我,在apache文件夹中有一个脚本,但我没有find。 如果你喜欢的文字: #!/bin/sh ### BEGIN INIT INFO # Provides: apache247 # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: apache247 # Description: Start apache247 ### […]

某些Android设备上的SSL出现SNI错误

我收到一个SNI错误: Hostname X provided via SNI, but no hostname provided in HTTP request 在某些Android手机上向我的网域发送SSL请求时。 这是尽pipe确保主机头设置在客户端上。 我也试过设置: SSLStrictSNIVHostCheck off 在我的Apache的conf,但我仍然看到这个错误。 有人能指点我吗?