Articles of apache 2.4

确定HTTPS状态并在一行中设置标题

我希望在.htaccess设置响应头,但只有在通过HTTPS加载站点时: Header set MyHeader "%D %t" "%{HTTPS:on}" # Error: Unknown parameter: %{HTTPS:on} Header set MyHeader "%D %t" "expr=%{HTTPS:on}" # Error: syntax error, unexpected $end: Function 'HTTPS' does not exist Header set MyHeader "%D %t" "expr=%{HTTPS}==on" # Error: syntax error, unexpected $end, expecting '(' HTTPS 在这里被列为一个variables PS:我很难理解Apacheexpression式是如何工作的,所以如果有人遇到一个简单的例子,请分享一下。

Apache mod_proxy:基于http头redirect?

我想知道是否可以根据http请求标头值将httpstream量定向到特定的后端服务器。 以“引用者”的http头值为例。 我有2个服务器实例。 一个用于UAT(testing)和一个用于预生产使用。 我想在这两个服务器实例前面有一个Apache反向代理。 而当一个http请求来到时,基于'referer'http头(uat或pre-prod)的值,我希望我的反向代理将请求指向正确的后端服务器实例。 这可能吗? 谢谢

Magento持有删除的文件

突然我的服务器内存不足了。 我试图通过使用“df -k”命令来检查磁盘空间,但它看起来很好。 所以跟踪很多东西后,我发现httpd服务暂挂删除的文件在临时内存,这是不能通过“df -k”来检查要检查最后删除的文件,仍与服务,我用“sudo lsof | grep已删除”这命令。 httpd 58324 58501 apache 8ur REG 253,0 0 279075355 /tmp/.ZendSem.SpCcXd(删除) 这是一个Magento应用程序在centos7(linux)服务器上用apache 2.4.6后花了一些时间我发现停止apache并运行“sudo lsof | grep deleted”这个命令我没有得到任何这样的问题。 只要我启动Apache并检查“sudo lsof | grep deleted”命令,这再次显示像附加的截图。

.htaccess不能redirect的URL没有扩展名

我有一些url(从外部链接),没有扩展名,例如 www.example.com/main 最初在服务器的根目录中有main.htm和main.html文件。 但是,一个 RewriteRule ^main$ main.html [L,R=301] 不起作用。 在服务器根目录下没有文件夹main/也没有名为main的文件。 在.htaccess文件中还有其他一些条目可以工作,所以我确信RewriteMod是有效的并且正在工作。 我还重写了可redirect的拼写错误规则(指向www.example.com/xyz)的链接www.example.com/xyz) 。 RewriteRule ^xyz\)$ xyz/index.html [L,R=301] 有趣的是, www.example.com/main main.de.html URL在浏览器中不会改变(浏览器栏中的URL不会改变(与redirect一样)),但页面会显示文件main.de.html 。 如果我创build了一个名为main.da.html的文件,它会显示该内容(但仅在apache重新启动后)。 我无法弄清楚它是如何到达那里或如何将其redirect到main.html 。

一个虚拟主机的HTTPS失败

好吧,这听起来像是一个奇怪的问题…我很犹豫,甚至在这里发布,因为我不能很好地处理如何描述它,更不用说从哪里开始寻找解决scheme。 我有一个站点(Fedora 24,标准的LAMP堆栈,运行在Amazon EC2上),当通过HTTPS请求时,最近开始响应空白页面。 所以举个例子,如果你浏览http://example.com/coolscript.php,它可以正常工作,但是http://example.com/coolscript.php返回一个空白页面。 Web服务器日志显示两者都是HTTP 200,但HTTPS版本没有返回数据(后者,如下所示): 1.2.3.4 – – [22/Dec/2016:16:19:39 +0000] "GET /coolscript.php HTTP/1.1" 200 9069 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" 1.2.3.4 – – [22/Dec/2016:16:19:25 +0000] "GET /coolscript.php HTTP/1.1" 200 – "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" 我曾经尝试过不同的浏览器,个人电脑,networking等,所有的回应都是空白的。 你可能会觉得我有些东西与Apache中的虚拟主机定义混淆了,但是访问简单的文件(甚至是PHP脚本)可以正常工作。 该证书是有效的,好去。 在同一台服务器上的其他支持HTTPS的站点可以很好地使用不同的证书,甚至使用相同证书的虚拟主机别名也能正常工作。 […]

基于名称的虚拟主机导致NET :: ERR_CERT_COMMON_NAME_INVALID

我有以下格式的web服务器configuration文件中的VirtualHost指令: <VirtualHost *:443> ServerName example.com inputhttps://example.com到浏览器正确呈现网站,stream量被TLSencryption。 只要我重写它 <VirtualHost example.com:443> 向端口443上的域发出GET请求会导致SSL错误,即Chrome中的NET::ERR_CERT_COMMON_NAME_INVALID ,表示Web服务器提供了对example.net有效的证书(该其他域仍在我的服务器上)。 如果我查看证书( openssl x509 -in cert.pem -text ),我得到它是为 Subject: CN=example.com 证书的path已正确configuration。 附加信息:两个域在主机文件中parsing为相同的127.0.0.1,没有设置NameVirtualHost,并且在Web服务器前有一个代理,希望这个代理与这个问题无关。

variablesSERVER_PROTOCOL究竟包含了什么(Apache 2.4)?

我有一个由Apache 2.4服务的网站,它应该通过HTTPS提供所有内容。 我已经有适当的redirect了,但没有发现任何病理情况。 我想改善这种情况,当我做作业的时候,在这个文档中遇到了下面这个例子: <If "%{SERVER_PROTOCOL} != 'HTTPS'"> Redirect "/admin/" "https://www.example.com/admin/" </If> 我稍微修改了这个以反映我的情况: <If "%{SERVER_PROTOCOL} != 'HTTPS'"> Redirect "/" "https://www.example.com/" </If> 现在,当试图从我的网站查看任何url时,浏览器进入无限redirect循环。 我怀疑这个例子实际上是错的。 SERVER_PROTOCOL在任何情况下都不包含HTTPS值。 相反,根据我在其他文章中读到的内容,它包含了诸如HTTP/1.1 (正如名字所期待的)。 所以我的问题是:什么情况下/什么情况下, SERVER_PROTOCOL究竟包含什么内容? 在几个小时的研究中,Apache官方文档网站是唯一一个将HTTPS列为SERVER_PROTOCOL的可能值的网站,原因可能是什么呢?

在打开ssl 1.1.0c的情况下从源代码构buildApache 2.4.25时出错

我成功地用OpenSSL 1.0.2构build了Apache 2.4.25。 但是由于我们在内部testing中发现的一些安全漏洞,我被要求为Openssl补丁最新版本。 所以我想用OpenSSL 1.1.0c(或)1.1.0d来构buildApache httpd 2.4.25 我的环境 lsb_release -a Distributor ID: RedHatEnterpriseServer Description: Red Hat Enterprise Linux Server release 5.11 (Tikanga) Release: 5.11 Codename: Tikanga Perl: 5.24 PCRE: 8.38 APR: 1.5.2 APR-util: 1.5.4 OpenSSL: 1.1.0c / 1.1.0d 以上所有的Apache依赖关系已经成功构build和安装 Apache 2.4.25 – 安装步骤 cd /my/softwares tar -xvf httpd-2.4.25.tar -C /my/build/ cd /my/build/httpd-2.4.25/ ./configure –prefix=/my/apache-httpd-2.4.25 […]

如何允许在Apache中通过.htaccess更改php版本?

我有一个与Apache的Centos 7,我想编译PHP 7.0和5.6,并configuration为PHP-FPM。 我如何configurationApache以允许用户使用.htaccess更改php版本? 示例.htaccess条目: AddHandler应用程序/ x-httpd-php7 .php

webdav,控制对文件夹的访问

在我的webdav共享的根(/ var / www / webdav /)我有两个文件夹: valid myuser 我想valid文件夹可以访问任何有效的用户。 所以我做了: Alias /webdav /var/www/webdav/ <Location /webdav> DAV On AuthType Digest AuthName "webdav" AuthUserFile /etc/apache2/users.password Require valid-user </Location> 而且,我希望myuser文件夹只能被myuser访问,所以: Alias /myuser /var/www/webdav/myuser <Location /myuser> DAV On AuthType Digest AuthName "webdav" AuthUserFile /etc/apache2/users.password Require user myuser </Location> 问题:另一个用户(不是myuser)正在访问webdav / myuser /。 我做错了什么?