Articles of apache 2.4

Apache httpd mod_proxy主页上的POST问题,如abc.com

我在前端有一个作为Web服务器的CentOS上的apache服务器2.4.18。 现在我有多个网站在tomcat 8.0.33上作为webapps在tomcat的默认webapps文件夹中部署。 在apache结尾的configuration: <VirtualHost 1.2.3.4:80> ServerName abc.com ServerAlias www.abc.com ProxyPass / http://localhost:8079/abc/ ProxyPassReverse / http://localhost:8079/abc/ </VirtualHost> <VirtualHost 1.2.3.4:80> ServerName def.com ServerAlias www.def.com ProxyPass / http://localhost:8079/def/ ProxyPassReverse / http://localhost:8079/def/ </VirtualHost> 两个.war文件的名字,abc.war&def.war被部署到tomcat的webapps文件夹中。 abc.com工作绝对好,因为它只是一个HTML网站。 但def.com是一个dynamic的网站,它在主页上有一个login表单。 login成功后的主页应该加载用户个人资料页面:login页面url – > def.com用户个人资料页面 – > def.com/profile.htm 请注意,主页加载成功(意味着GET成功执行)在浏览器,但当用户试图login(这是一个POST请求),它以某种方式尝试加载:def.com/def/profile.htm 另外请注意,如果我将configuration更改为: <VirtualHost 1.2.3.4:80> ServerName def.com ServerAlias www.def.com ProxyPass /def/ http://localhost:8079/def/ ProxyPassReverse /def/ http://localhost:8079/def/ </VirtualHost> […]

Ubuntu 16.04上的Apache2:FileETag的默认configuration

我有一个关于Apache 2.4的ETagconfiguration的问题。 Apache文档( https://httpd.apache.org/docs/2.4/en/mod/core.html#fileetag )指出,FileETag的默认值是INode MTime Size 。 但是,我无法用我的设置来确认这种行为。 我使用Apache 2.4从默认存储库运行Ubuntu 16.04服务器。 我的计划是防止Apache使用inode生成ETags,因为CVE-2003-1418。 但是,我注意到FileETag -INode没有改变生成的ETag(例如:c83-54a250499ffc0)。 所以我尝试了FileETag +INode ,出现了一个新块(ac2981-c83-54a250499ffc0)。 使用FileETag INode只返回Inode(ac2981)。 我尝试了正式的httpd Docker镜像( https://hub.docker.com/_/httpd/ ),并注意到了相同的行为。 首先我假设Ubuntu修改了它的Apache包,但是Docker从源代码编译并具有相同的行为。 那么,这里发生了什么? Apache文档中的默认值是否错误? 我只想确定是否需要额外的configuration,或者是否可以信任默认值。

Apache索引限制下载文件types

任何人都可以指导我如何限制可以从目录列表中的Apache下载的文件types? 我在httpd.conf中有一些目录定义,如下所示: <Directory "/var/www/data01"> Options Indexes FollowSymLinks Require all granted AllowOverride none </Directory> 我想让用户做的是列出每个文件夹中的所有文件,但只下载具有特定扩展名的文件(例如* .txt) 我试过这个: <Directory "/var/www/data01"> Options Indexes FollowSymLinks IndexOptions ShowForbidden Require all granted AllowOverride all order allow,deny <FilesMatch "\.txt$"> order deny,allow allow from all </FilesMatch> </Directory> 但是,当我浏览文件夹时,这给了我一个'您没有权限访问'的错误。

Apache-2.4.7忽略了响应头Content-Encoding:身份,而不是由PHP设置的Content-Encoding:none

我刚刚意识到我的明显问题(以及我在前面提到的问题中提到的StackOverflow问题中的“解决scheme” Content-Encoding: none )很可能只是由于误解实际上是如何工作的。 请在最后查看我的附录。 在我正在构build的PHP应用程序中,我试图pipe理自己的内容编码协商和压缩。 当我将响应头Content-Encoding从PHP内部设置为gzip或deflate ,Apache尊重这一点。 但是,当我将其设置为identity Apache忽略这一点,并压缩响应。 它似乎只尊重非标准的Content-Encoding: none ,因为我在这个堆栈溢出问题的一些答案和他们的评论中发现。 因此,我现在把它设置为none ,从PHP内部,然后通过.htaccess更改标题: Header edit Content-Encoding ^none$ identity …但这真的感觉像一个丑陋的黑客。 我希望我不必这样做,以防万一我切换服务器,例如。 这是一个已知的问题和/或这种非标准的行为logging在某处? 我似乎无法find任何具体的文件。 我也search了Apache的bug追踪器 ,但只能find一个切线相关的bug报告 ,关于Apache不尊重Accept-Encoding头值。 附录 当我在.htaccess禁用Apache的mod_deflate时(还有其他选项可以做到这一点): SetEnv no-gzip 1 …并在PHP中设置Content-Encoding: identity ,Apache保持这个标题和内容完好,就好了。 因此,这是我认为实际发生的事情: 这不是Content-Encoding: none官方的信号给Apache来禁止压缩( Content-Encoding: bogus ,例如,产生相同的结果),这将解释为什么我找不到任何文档。 相反,它只是一个不是RFC标准的值。 因此mod_deflate保持内容不变,假设它是一些不想要干扰的非标准编码。 所以,当我在PHP中设置Content-Encoding: identity ,mod_deflate可能认为这是一个有效的RFC标准,意味着内容还没有被压缩,而且由于启用了mod_deflate,所以继续压缩它。 此外,如果我将Content-Encoding设置为gzip或deflate ,例如,mod_deflate可能会将其完全保留,或尝试压缩,但压缩algorithm会识别内容已被压缩。 也许有人可以证实这是否是对实际发生的事情的正确解释? 所以,一个可能的解决scheme是要么禁用我的PHP应用程序pipe理的一些选定的文件/path的mod_deflate,要么如果我的内容已经以其他方式压缩了,甚至可以禁用mod_deflate /站点范围/服务器范围。

.htaccessredirect现有文件夹的URL

我正在使用的软件使用丑陋的url。 为了方便用户共享项目(这是一个项目pipe理包),我想要redirect。 它应该redirectprojectadmin.dev/project/1234到其他的URL。 我可以得到这个使用他们的web.config文件ISS的工作,但Apache让我头痛。 为了演示目的,我缩短了我当前的.htaccess文件,但它仍然给出了这个问题: RewriteEngine On RewriteRule ^.*project/([0-9]+)$ RandomOtherPage.php 当我访问urlprojectadmin.dev/project/123它给了我一个403(禁止)的错误。 我认为这是因为文件夹project存在于我的项目中。 当我将.htaccess文件更改为: RewriteEngine On RewriteRule ^.*projects/([0-9]+)$ RandomOtherPage.php 并去projectadmin.dev/projects/123它将按我的意图工作。 我的问题:我如何忽略项目文件夹存在的事实,但仍然有可访问的文件(例如projectadmin.dev/projects/image.jpg仍然可以工作),并有数字工作redirect?

困惑于SSLCACertificateFile参数

有一些我无法理解Apache SSL conf上的SSLCACertificateFile参数。 举个例子,我有一个ROOT证书“A”,颁发了中间证书“B”。 然后,我用B产生了几个叶证书,比如说“L1”,“L2”。 现在,根据文档,如果我只想信任L1和L2,我应该把“B”和“A”放在SSLCACertificateFile指向的文件中(如果我只放了证书“B”,Apache给出一个无法find的文件,发行者错误)。 现在,让我们生成另一个从“A”(根)派生的证书“C”。 apache会信任使用证书C的对等方吗? 对我来说,这是一个“是的,它会的”,因为Apache会在SSLCACertificateFile里find“C”的发行者,那就是“A”! 但我不想信任C,我只想相信L1和L2。 我错过了什么吗? 非常感谢!

Apache 2.4升级技巧?

我想在CentOS 5 VPS上将我的apache升级到2.4,因为它的性能和减less的内存使用量。 任何经验/技巧分享?

在web目录列表(apache)中显示符号链接及其目标

使用ls -l列出目录内容显示以下输出: total 12 drwxr-xr-x 3 root root 4096 Dec 11 16:38 2.3 drwxr-xr-x 5 root root 4096 Dec 11 16:38 2.4 drwxr-xr-x 2 root root 4096 Dec 11 16:38 archive lrwxrwxrwx 1 root root 10 Dec 11 16:38 current -> 2.4/2.4.1/ lrwxrwxrwx 1 root root 10 Dec 11 16:38 next -> 2.4/2.4.2/ lrwxrwxrwx 1 […]

为/ server-status保留一个http插槽?

我有一个由于某种原因悬挂的Apache服务器。 当我通常要检查Apache服务器的负载时,我倾向于使用mod_status通过http://webserver1.example.org/server-status上的URL或命令行(如service httpd fullstatus使用mod_status 。 但是,今天,服务器拒绝所有新的连接。 一些神秘的问题是导致连接失败,这意味着连接数量会填满所有可用连接(例如,连接数量超过MaxClients设置),因此无论是http://webserver1.example.org/server-status还是service httpd fullstatus可以返回任何东西。 是否可以configurationApache为mod_status页面保留一个或两个插槽?

如何让Apache停止服务所有未知的文件types(如.php〜)?

我来自IIS并转移到Apache,最近发现,Apache默认情况下提供未知文件扩展名的文件作为纯文本。 这可能是一个问题,如果用户使用某些程序备份.php文件为.php〜。 然后通过在浏览器中导航到.php文件变得完全可读。 更糟糕的是,这些.php文件通常被认为在用户的linux环境中是“隐藏的”,所以有些甚至不知道它们存在。 机器人已经创build了这个事实,冲刷互联网寻找stream行的文件名备份,并从中提取可能的安全信息。 我已经知道如何停止提供.php文件或任何特定的文件扩展名。 我也知道不要使用任何编辑器来保存这样的备份文件。 我的问题是,我怎么能阻止这个默认的Apache服务的所有非MIME文件types的行为呢? 我只是不喜欢这种行为,并希望阻止它。 我不希望它提供.aspx〜,.html〜,.bob,.carl,没有扩展或其他任何不是真正的MIMEtypes。 我知道我可以去使用一个指令来首先拒绝访问所有文件types。 然后添加我想要一个接一个的服务。 但是我想知道是否有更简单/更快的方法。 谢谢你的帮助。