Articles of apache 2.2

如何防止Apache / PHP显示phpinfo()中的环境variables部分?

我需要防止用户使用phpinfo()意外暴露存储在环境variables中的私有数据。 有没有办法configurationApache或php.ini禁止使用phpinfo呈现的部分?

是否有可能重写一些查询stringHTTPS并保持一切HTTP?

我正在重写查询string到美丽的URI,例如: index.php?q=/en/contact成为/en/contact ,所有的作品很好.. # httpd.conf # HANDLE THE QUERY RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 甚至有可能重写单个查询来强制https和强制一切到http ? 我已经尝试了许多不同的方法,通常以无穷循环结束。 我可以写一个插件来做到这一点在PHP中,但认为这将是更有效的处理这在服务器conf。 我会很乐意提供任何build议。 编辑:为了澄清,我想能够重写非SSL http://example.com/index.php?q=/en/contact启用S​​SL https://example.com/en/contact并且每个不是/en/contact查询都被写入http://example.com/…

为什么我的htaccessredirect工作?

我已经设置了一个简单的htaccessredirect,看起来像这样(这是整个.htaccess文件): Options +FollowSymLinks RewriteEngine On Redirect 301 /something http://something.com/something.php 如果我然后加载包含这个.htaccess的网站,即myredirectsite.com/something我最终以下404: The requested URL /something was not found on this server. Apache/2.2.3 (Red Hat) Server at myredirectsite.com Port 80 和日志: [星期二七月10 14:25:46 2012] [错误] [客户端xx.xx.xxx.xx]文件不存在:/ home / sites / scp / something 有些东西不是文件,有些东西不存在。 我假设我可以使用redirect相同的重写,但它看起来像redirect需要为一个文件,实际上存在? 我创build了文件“东西”,它只是试图加载空白文件。 没有redirect。 我错过了什么工作?

<directory>指令是否需要在<virtualhost>内?

我有一堆URL指向Apache服务器的conf文件中的同一个目录。 基本结构是这样的: <VirtualHost *:80> ServerName mysite.com ServerAlias www.mysite.com DocumentRoot /var/www/thesite <Directory /var/www/thesite> Options Indexes FollowSymLinks AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 现在,每个人都是基本相同的,只是改变SeverName和ServerAlias指令。 是否允许将<Directory>指令移动到<VirtualHost>之外的顶部? 而且,当我在时,是否有任何理由,即使它们完全不同,我也不能列出十几个网站作为SeverAlias ?

Apache SSL代理找不到客户端证书?

我的Web服务器需要与位于防火墙后面的第三方服务器集成。 为了通过防火墙,所有的请求必须来自同一个IP地址,并通过SSLauthentication。 因此,我build立了一台应该作为代理的机器,并通过SSL将所有stream量转发到第三方服务器。 我使用证书和密钥文件设置了代理,并且可以通过CURL成功地请求第三方服务,使用证书和密钥文件。 我在Apache上安装了一个虚拟主机来传递这些请求,但不断收到错误,说明与远程服务器的SSL握手失败。 我在我的apache日志中看到以下错误消息: 代理客户端证书callback:(:443)下游服务器想要客户端证书,但没有configuration[Sun Jul 29 01:40:48 2012] [error](502)未知错误502:proxy:通过请求主体未能<第三方IP >:18443(<第三方url) [Sun Jul 29 01:40:48 2012] [error] [client] proxy:SSL握手过程中出错,远程服务器返回/ 我的apache虚拟主机configuration如下所示: <VirtualHost *:18443> ServerName <Proxy IP> SSLEngine on SSLProxyEngine On SSLCertificateFile /etc/apache2/ssl/my_server.pem SSLCertificateKeyFile /etc/apache2/ssl/my_server.key SSLProxyCACertificatePath /etc/ssl/certs ProxyRequests Off ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / https://<3rd party server address>:18443 […]

PHP short_open_tag不启用(CentOS 6)

我正在build立一个在CentOS 6上运行的Apache2,PHP 5.3.3服务器。我的web应用程序使用短标签<? 和<?= 。 我似乎无法获得启用短标签。 当我运行phpinfo()我看到short_open_tag = off ,但在/etc/php.ini我有这个: short_open_tag = on (和是的,我已经重新启动服务器)。 我也尝试使用<?php ini_set('short_open_tag','1'); ?> <?php ini_set('short_open_tag','1'); ?>在页面的开头,它仍然不parsing短代码的代码。 我唯一能想到的是另一个php.ini文件正在被使用,而不是在/etc/php.ini重写。 有什么build议?

Apache作为tomcat的反向代理(运行jenkins)

我已经设置了Apache作为运行jenkins-CI的tomcat的反向代理。 我可以从外面访问该网站的罚款,除了当我loginjenkins,它redirect到我的LAN主机名,当然它失败了我的networking之外。 之后,我可以手动input原始地址到浏览器,它会正常工作,直到我必须再次login。 我不知道这是jenkins中的问题,还是在我的apache / tomcat代理设置中。 jenkins还在pipe理页面上报告说我的代理设置不正确,但是没有再说。 Apache VirtualHostconfiguration: <VirtualHost *:80> ServerName jenkins.outsideaddress ServerAlias ci.outsideaddress jenkins.insideaddress ci.insideaddress ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost> 此外,代理和proxy_http模块被加载(根据apachectl -M )

MAMP – 主机名更改为具有两个本地主机的项目的第一个虚拟主机SSL条目

我有两个互相拷贝的项目,在我的Mac上使用MAMP。 他们都有SSL页面。 但是,只要我点击项目2的安全SSL页面,base_url或host就会变成project1,而不是剩下的project2。 我知道这是虚拟主机的一个问题,因为如果我切换条目的顺序,就会发生相反的情况。 这是我的configuration文件: /Applications/MAMP/conf/extra/httpd-ssl.conf <VirtualHost _default_:443> DocumentRoot "/Applications/MAMP/htdocs/proj1" ServerName proj1.localhost:443 ErrorLog "/Applications/MAMP/Library/logs/error_log" TransferLog "/Applications/MAMP/Library/logs/access_log" SSLEngine on SSLCertificateFile "/Applications/MAMP/conf/apache/ssl/server.crt" SSLCertificateKeyFile "/Applications/MAMP/conf/apache/ssl/server.key" </VirtualHost> <VirtualHost _default_:443> DocumentRoot "/Applications/MAMP/htdocs/proj2" ServerName proj2.localhost:443 ErrorLog "/Applications/MAMP/Library/logs/error_log" TransferLog "/Applications/MAMP/Library/logs/access_log" SSLEngine on SSLCertificateFile "/Applications/MAMP/conf/apache/ssl/server.crt" SSLCertificateKeyFile "/Applications/MAMP/conf/apache/ssl/server.key" </VirtualHost> ——————– cat /etc/hosts ## # Host Database # # localhost is used to configure the […]

mod_rewrite删除结尾斜杠导致循环

我有一个网站使用mod_rewrite制作漂亮的url…我到处阅读删除结尾的斜杠对search引擎优化很好,因此我遵循规则: RewriteRule ^(.+)/$ /$1 [R=301,L] 我认为301redirect可能会影响性能,但这不是我的问题… 事情是,当我尝试访问一个EXISTING子目录的index.php像这样删除尾部的斜杠导致我循环: http : //mysite.com/a-real/directory/ 据我了解,mod_rewrite试图删除后面的斜杠,但在这种情况下,它不是假设。 我怎样才能解决这个问题? 我敢打赌,这是一个相当简单的解决scheme,但超出我的知识。

如何让Nginx转发原来的主机名

我有一个nginx服务器充当我的apache服务器的负载平衡器。 我正在使用子域,我的代码依赖于HTTP_HOST值来执行正确的任务。 当我发出请求说: http://get.example.com : http://get.example.com一旦它被转发Apache的HTTP_HOST成为example.com 。 我的问题是如何使它保持原来的要求相同? 这是我的nginxconfiguration: upstream example.com { server 192.168.2.1:8909 weight=2; server 192.168.2.2:8909 weight=1; server 192.168.2.3:8909 weight=1; } server { listen 80; location / { proxy_pass http://example.com; } } 我试图添加多个proxy_pass ,每个子域的一个,它似乎并没有工作。