Articles of apache 2.4

Apache解码分号 – mod_proxy

Apache接收到一个带有编码分号(%3B)的请求,在将请求传递给代理(Spring Tomcat的后端)之前将其解码。 相关的apache虚拟主机行是: ProxyPreserveHost on RequestHeader set X-Forwarded-Proto https ProxyPass / http://127.0.0.1:8081/ ProxyPassReverse / http://127.0.0.1:8081/ 所以例如当一个URL的请求像 http://testsite.com/page/%27+many+times%3B+the+valiant/author 将代理转发为 http://testsite.com/page/%27+many+times/author 有什么我可以做的,以防止阿帕奇解码该URL之前转发给代理? 也许在apache.org/bugzilla上提到相关的问题

将Apache授权标头规则迁移到Lighttpd

我的Web服务器使用lighttpd和PHP-FPM运行PHP应用程序多年。 现在,在第三方软件升级之后,我必须包含一些规则才能激活REST API。 <IfModule mod_setenvif.c> SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 </IfModule> <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteBase /api/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] </IfModule> 我想知道它在做什么,如果它有支持的话,可以基于lighttpdconfiguration重写它。

在Centos 7上更改Apache 2.4.x的日志文件目录

目前我的日志文件在`/ var / log / httpd /下是可用的。 由于我的根分区数量有限,日志超出限制,导致系统卡住。 我想将apache日志目录更改为另一个已安装的卷。 我没有改变,发现任何关于日志文件目录在configuration文件中,将/var/log/http/*目录更改为/someRandomVolume/httpLogFolder/*最简单的方法是什么? 这是我有关于login我的configuration文件; # # ErrorLog: The location of the error log file. # If you do not specify an ErrorLog directive within a <VirtualHost> # container, error messages relating to that virtual host will be # logged here. If you *do* define an error logfile for […]

如何通过主机名转发到防火墙后的不同Web主机–mod_proxy?

我需要一个快速的解决scheme,允许我在防火墙后面托pipe多个Web服务器。 他们在不同的计算机上,所以我不能使用Apache虚拟主机。 我也不想为每台机器使用不同的非标准端口。 问题是我的路由器只能将端口443转发给一台机器。 我认为最好的解决scheme是使用反向代理或代理转发,但是我一直在理解如何设置这个问题。 我假设我可以将所有443通信端口转发到其中一台服务器,并使该代理服务器。 所有服务器只接受htmlsstream量。 我正在使用DDNS,并且所有服务器都parsing为相同的WAN IP地址。 build立: server1.domain.com =代理和维基服务器 server2.domain.com =文档服务器 server3.domain.com = owncloud服务器 我试图把以下放在server1上的/etc/apache2/conf-available/proxy-pass.conf中: SSLProxyEngine on ProxyPass "/directory" "https://server2.domain.com/directory" ProxyPass "/owncloud" "https://server3.domain.com/owncloud" 这工作,但不是我在找什么。 无论目录如何,我都需要将所有stream量引导到由传入URL域名指定的服务器,因为我在基本URL之后有很多子目录。 就像是: ProxyPass "https://server2.domain.com" "https://server2.domain.com" ProxyPass "https://server3.domain.com" "https://server3.domain.com" 我应该寻找另一种解决scheme,如pound ,还是有办法用apache来做到这一点。 我想我已经安装了Apache,所以使用它?

如何让Apache,Ubuntu和PHP7使用HTTP / 2?

我已经按照https://http2.pro/doc/Apache提到的步骤,但我的网站仍然只提供HTTP / 1.1文件。 我可以看到,mod_http2是在重启Apache时没有错误的configuration: LoadModule http2_module /usr/lib/apache2/modules/mod_http2.so 而且该站点有一个来自LetsEncrypt的新SSL证书和站点configurationProtocols h2 http/1.1的协议行,但Chrome仍然只显示这些文件被作为HTTP / 1.1提供。 是否有一个缺失的步骤? 谢谢。 版本:Apache 2.4.27,Ubuntu 16.04.3,PHP 7.0.22

在Apache 2.4 Windows 10上未启用OpenSSL

我在Windows 10上运行php 7.1.10,到目前为止,如果我做php -m我看到扩展名列表中的openssl,我复制libssh2.dll , ssleay32.dll , libeay32.dll到apache/bin和Windows/System32重新启动apache几次,但是OpenSSL仍然是禁用的。 我错过了configuration中的东西吗?

Apache似乎忽略了80端口的虚拟主机

这工作(或似乎是)今天早些时候,但我最近重新启动我的服务器,现在Apache似乎不承认我的端口80虚拟主机。 我的网站来自/var/www/example.com/public_html,端口80 应该redirect到HTTPS。 在我的服务器重新启动之前,这是工作; 现在它不redirect,并提供/ var / www / html中的默认内容。 我不确定服务器重新启动后是否需要启动某些进程或服务? 该网站已启用,端口443虚拟主机正在按预期工作。 Apache版本是2.4.27,OS是Ubuntu 17.10。 这是我的conf文件在/etc/apache2/sites-available/example.com.conf。 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule ssl_module modules/mod_ssl.so <VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] </IfModule> </VirtualHost> <VirtualHost *:443> SSLEngine On SSLCertificateKeyFile /etc/ssl/private/example_com.key SSLCertificateFile /etc/ssl/certs/example_com.crt SSLCertificateChainFile /etc/ssl/certs/example_com.ca-bundle […]

ec2 Apache服务器http-500疑难解答

我的网站时髦,所以我重新启动我的服务器。 我也跑sudo yum更新和更新一切。 现在我的网站不会加载(www.kisnardonline.com),我得到http-500错误。 我不是100%确定它是否与更新有关。 我已经search了一堆,但没有想法还有什么可以看看。 它看起来像更新没有覆盖我的configuration文件,所以我不知道什么可以打破? 我能够SSH到我的服务器。 我能够连接到我的MySQL数据库。 我能够运行我的Java游戏服务器,并从我的本地PC连接到我的游戏客户端。 顶部输出对我来说很好(大量的内存和CPU)。 还有什么我可以检查? 百胜历史信息77 Loaded plugins: priorities, update-motd, upgrade-helper Transaction ID : 77 Begin time : Thu Nov 2 23:49:20 2017 Begin rpmdb : 482:891f2e1355453f459cb67e212feb05d2fcd0d421 End time : 23:50:29 2017 (69 seconds) End rpmdb : 492:cfa44d8f63026943da406a0b769ab02395772f96 User : EC2 Default User <ec2-user> Return-Code : Success Command […]

Apache / Tomcat Web服务器:nmap总是返回所有的http方法都是允许的

我在Apache Tomcat服务器前面运行一个Apache服务器的Web服务器。 我的目标是:在Web服务器上禁用http-methods DELETE和PUT 。 根据OWASP( https://www.owasp.org/index.php/Test_HTTP_Methods_ (OTG-CONFIG-006 ) ),这个命令应该被testing: nmap -p 80 –script http-methods www.example.com 在我的服务器上,我得到这个回应: PORT STATE SERVICE 80/tcp open http | http-methods: | Supported Methods: GET HEAD POST PUT DELETE OPTIONS |_ Potentially risky methods: PUT DELETE 根据http://www.techstacks.com/howto/disable-http-methods-in-tomcat.html我可以禁用PUT和DELETE这个在web.xml中的行 <security-constraint> <web-resource-collection> <web-resource-name>restricted methods</web-resource-name> <url-pattern>/*</url-pattern> <http-method>PUT</http-method> <http-method>DELETE</http-method> </web-resource-collection> <auth-constraint /> </security-constraint> 如果我添加这个,我的反应仍然是Supported Methods: GET […]

用htaccess根据主机重写robots.txt

我试图重写基于服务器的域的文件名。 下面的代码是错误的/不工作,但说明了预期的效果。 <If "req('Host') != '*.mydevserver.com'"> RewriteRule "^/robots\.txt$" "robots-staging.txt" [R] </If> 希望的效果是这个htaccess将指向一个不同的robots.txt取决于它是否在分期(通配符子域)或不。 用法示例: http://client1.devsite.com/robots.txt重写为 http://client1.devsite.com/robots-staging.txt http://client2.devsite.com/robots.txt改写为 http://client2.devsite.com/robots-staging.txt https://client.com/robots.txt不重写 https://myclient.com/robots.txt