Articles of apache 2.4

Apache 2.4替代mod_auth_shadow?

我的雇主多年来一直在运行RHEL 6.x和Apache httpd 2.2。 目前我们正在迁移到运行RHEL 7.1和Apache httpd 2.4的新硬件。 我们目前的网站有不同的地点,包含不同的客户端可下载的材料。 客户端都在服务器上有系统帐户。 我们目前基于客户端用户的组成员身份控制对位置的访问。 例如: <Location /xyzzy/*> AuthName "xyzzy product support" AuthShadow on AuthType Basic require group xyzzy Options Includes ExecCGI Indexes FollowSymLinks MultiViews </Location> 我们已经成功使用mod_auth_shadow在Apache 2.2下实现这个访问控制。 但是,我们发现这个模块在2.4下不会加载,因为模块调用了2.4中不存在的ap_requires() 。 我们已经注意到,RHEL 7默认运行 /usr/sbin/saslauthd -m /run/saslauthd -a pam 所以我一直在寻找使用PAM通过mod_authn_sasl作为mod_authn_sasl的替代。 我已经部分成功与这个Apacheconfiguration: <Location /xyzzy/*> AuthType Basic AuthName "xyzzy product support" AuthBasicProvider sasl […]

与ssl的Apache反向代理不工作

我试图使用Apache(2.4)作为反向代理的Tomcat(7),这工作正常,当我只使用http。 httpconfiguration: <VirtualHost *:80> ServerName abc.domain.org ProxyRequests Off ProxyPreserveHost On <Proxy *> Order allow,deny Allow from all </Proxy> ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost> 这工作完全正常。 但是当我想要Apache处理https时,它根本就不工作。 我尝试了很多东西,但是最后只能看到一个“index of /”的平面页面, httpsconfiguration: <VirtualHost *:443> ServerName abc.domain.org SSLEngine On SSLCertificateFile path SSLCertificateKeyFile path SSLCertificateChainFile path ProxyRequests Off ProxyPreserveHost On <Proxy *> Order allow,deny Allow from all </Proxy> […]

Apache重写和PHP的variablesREQUEST_URI

我有一个问题,Apache传递给PHP $_SERVER['REQUEST_URI']variables的URL重写后,而不是原来的请求。 我正在做这个重写,因为我有一个WordPress的网站,并希望将其移动到一个子目录,而不是在根path中,但仍然希望保持其URL为根URL。 这并不一致。 如果我请求www.xyz.com/wp-admin它将使用www.xyz.com/wordpress/wp-admin (这是重写后的URL)填充PHP REQUEST_URIvariables,但是如果我请求www.xyz.com/wp-admin/ (带有斜线),它实际上使用www.xyz.com/wp-admin/ (原始URL,在重写之前)填充PHP REQUEST_URIvariables。 我想要的是在REQUEST_URI被重写之前填充URL。 我的.htaccess文件如下: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^(www.)?xyz.com$ RewriteCond %{REQUEST_URI} !^/wordpress/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /wordpress/$1 RewriteCond %{HTTP_HOST} ^(www.)?xyz.com$ RewriteRule ^(/)?$ wordpress/index.php [L] </IfModule>` PHP版本是5.3。 Apache版本是2.4(Win32)。 更新 :我更深入地研究它,当我inputurlwww.xyz.com/wp-admin首先有一个301redirect到www.xyz.com/wordpress/wp-admin/但是这不会发生www.xyz.com/wp-admin/ (带有斜线)。 对于具有斜线的那个,只有重写,如预期的那样。 所以现在的问题是为什么301redirect发生在URL的第一个地方没有结尾的斜杠。 为了澄清,没有实际的文件夹/wp-admin/ ,但是有一个文件夹/wordpress/wp-admin/ 。

将htaccess重写规则转换为Apache2虚拟主机规则

我试图通过结合一些.htaccess规则来设置通配符子域RewriteRule ,因为我相信我可以对我的Apache vhosts文件使用相同的规则。 实质上, example.com和www.example.com转到根path并查找index.php 。 所有其他(dynamic)子级别的请求,例如abc.example.com被重写(浏览器不可见)到example.com/process.php?p=abc 。 其次,基本/根级别之外的任何来自子域的文件的请求需要被重写为从没有子域的标准域的根path获得。 所以abc.example.com/css/style.css需要来自example.com/css/style.css 这是我的尝试。 我得到一个Apache错误: 您无权访问此服务器上的/index.php。 对于任何子域的尝试,除了www,其预期的工作,以及标准的example.com ,仍然工作正常。 <VirtualHost *:80> ServerAdmin [email protected] ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] ServerName other.example.com ServerAlias *.example.com DocumentRoot /var/www/example.com/public_html/ <Directory /var/www/example.com/public_html/> Options FollowSymLinks AllowOverride all Require all granted RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteCond […]

重写移动url的规则

我必须将移动用户redirect到一个新的URL( /amp/… ),所以我将这个片段代码添加到我的Apache站点configuration: RewriteCond %{HTTP_REFERER} !^http://test.domain.com [NC] RewriteCond %{REQUEST_URI} !^/amp/.*$ RewriteCond %{HTTP_USER_AGENT} "android|blackberry|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC] RewriteRule ^(.*)$ /amp/$1 [L,R=302]` 问题是我只在请求主页时( test.domain.com )redirect,而不是当我请求任何其他URL(例如test.domain.com/category/web )。 任何想法我做错了什么? 这是一个WordPress的网站,完整的重写模块是: <Directory /var/www/project> DirectoryIndex index.php Options None FollowSymLinks AllowOverride none <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^uploads/(.+) http://myCDN.com/uploads/$1 [R,L] RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule […]

如何将Apache 2从2.2升级到2.4的Ubuntu 10.04

我正在进行从Apache 2.2到2.4.3的testing升级。 我使用Ubuntu 10.04。 我会升级到12.04,看看升级是否会变得更顺畅。 不幸的是,我被告知这不是一个选项…所以我坚持使用10.04。 我这样做的过程是: 在尝试这个之前,我已经设法将APR从1.3升级到1.4和APR-UTIL,因为apache事先说过它们是先决条件: http : //apr.apache.org/download.cgi 。 我把apr和apr-util放在httpd-2.4.3 / srclib下 我也采取了Schlauberg关于libapr去除的build议。 所以当我删除当前apache的所有痕迹时,我也删除了所有的痕迹。 首先删除当前apache的所有痕迹: sudo apt-get –purge remove apache2 sudo apt-get remove apache2-common apache2-utils apache2.2-bin apache2-common sudo apt-get autoremove whereis apache2 sudo rm -Rf /etc/apache2 /usr/lib/apache2 /usr/include/apache2 之后,我做了以下几点: sudo apt-get install build-essential sudo apt-get build-dep apache2 然后用以下方法安装apache 2.4: wget http://www.bizdirusa.com/mirrors/apache//httpd/httpd-2.4.3.tar.gz tar […]

自定义身份validation处理程序的mod_auth_form?

Apache 2.3 / 2.4有mod_auth_form ,允许用户显示一个HTML表单供用户login。 我可以,而不是使用纯HTML表单使用应用程序服务器来提供表单(J2EE,node.js,PHP,Vert.x等)和身份validation逻辑,只是返回会话cookie(如何将需要看起来像?)

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 ### […]

大量虚拟主机与Apache 2.4

我想在RewriteRule使用VirtualDocumentRoot设置的值。 Apache 文档说: 另外要确定的是文档根目录(使用DocumentRootconfiguration,并通过DOCUMENT_ROOT环境variables可用于CGI脚本)。 在一个正常的configuration中,核心模块在将URI映射到文件名时被这个模块使用,但是当服务器被configuration做dynamic虚拟主机时,这个作业必须被另一个模块(mod_vhost_alias或者mod_rewrite)接pipe,做映射的方法。 这两个模块都不负责设置DOCUMENT_ROOT环境variables,所以如果有任何CGI或SSI文档使用它,它们将会产生一个误导性的值。 参考文档,似乎我将无法在RewriteRule使用%{DOCUMENT_ROOT} 。 但是在寻找替代解决scheme后,我发现这个票据 (标题: DOCUMENT_ROOT环境variables用VirtualDocumentRoot设置不正确 )说它已经被“2.4.1修复”了。 我正在使用最新(稳定)版本的Apache: $ httpd -v Server version: Apache/2.4.9 (Unix) Server built: Jun 18 2014 03:07:48 …但似乎并不适合我。 testing时, %{DOCUMENT_ROOT}具有httpd.conf中由DocumentRoot设置的默认值。 我想通过VirtualDocumentRootdynamic设置%{DOCUMENT_ROOT} (或任何其他我可以使用的variables)。 这里是我想在httpd-vhosts.conf中使用的: <VirtualHost *:8080> ServerName dev ServerAlias *.dev VirtualDocumentRoot "/usr/local/var/www/.dev/%-2+" RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1" [P] </VirtualHost> 有解决scheme吗?

使用AD子组的Apache LDAP身份validation

我正尝试在Apache上运行的网站上使用Active Directory用户进行身份validation。 我的设置 活动目录:用户“steven”是“员工”组的成员。 用户“cindy”是属于“职员”(= cindy是“职员”组的一个子组)成员的“财务”组的成员。 Apache: Apache 2.4与mod_authnz_ldap 我的Apache网站configuration: AuthName "Please enter your login data." AuthType Basic AuthBasicProvider ldap AuthLDAPBindDN [email protected] AuthLDAPBindPassword "userpassword" AuthLDAPURL "ldap://dc.domain.local/DC=domain,DC=local?sAMAccountName?sub?(objectClass=*)" Require ldap-group CN=Staff,OU=Groups,OU=Accounts,DC=domain,DC=local 问题 Steven(或其他任何可能是“staff”组的直接成员的用户)authentication成功,但是cindy等子组的成员将不会进行authentication。 我已经尝试添加“AuthLDAPMaxSubGroupDepth 10”(10无论如何应该是默认值),但这也没有帮助。 任何人可能会帮助?