Articles of apache 2.2

无法在apache上closuresSNI

当我去: http : //web-sniffer.net/并检查我的网站的标题( https://www.example.org ),我得到一个状态代码200 但是当我使用单选buttonHTTP / 1.0(没有主机头),我得到一个状态代码400(坏请求)。 我的apache日志说:“通过SNI提供的主机名www.example.org,但没有HTTP请求中提供的hostnmae” 我读了,使其工作我需要closures指令“SSLStrictSNIVHostCheck”在我的Apacheconfiguration文件。 我添加了这个指令,但是在制作HTTP / 1.0(没有主机头)的时候,我仍然得到了状态码400。 作为参考,这是我的ports.conf文件: ServerName www.example.org NameVirtualHost *:80 Listen 10.0.0.1:80 <IfModule mod_ssl.c> # If you add NameVirtualHost *:443 here, you will also have to change # the VirtualHost statement in /etc/apache2/sites-available/default-ssl # to <VirtualHost *:443> # Server Name Indication for SSL named virtual hosts […]

我怎样才能configurationApache每个HTTP错误500发送电子邮件

我有一些服务器应用程序在apache2上运行; Ruby on Rails,PHP和其他。 在所有情况下,我希望apache发送电子邮件,每当Apache响应HTTP错误500内部服务器错误。 我怎样才能做到这一点?

Apache以root身份运行,而不是在httpd.conf中指定的用户

我试图启用WordPress上传文件到wp-content文件夹,而不需要将文件夹的权限设置为777.但是,我遇到了一些困难。 为wp-content文件夹设置的组和用户组匹配组,并且用户Apache被configuration为在httpd.conf中使用。 但是,当我运行下面的命令时,看起来Apache实际上是以root身份运行,而不是在httpd.conf中指定的用户。 httpd.confconfiguration 用户xxx 组yyy 命令运行以确定用户Apache正在运行 ps aux | grep httpd 从上面的命令输出 513 1294 0.4 1.4 316420 54864? S 08:30 0:06 / usr / sbin / httpd 513是用户xxx的正确UID,以便正确显示。 但是,我仍然无法在WordPress中上传文件,而没有将wp-content文件夹的权限设置为777。 有人可以告诉我这是什么问题吗?

mod_evasive DOSSystemCommand不工作

我试图让mod_evasive发射一个脚本来添加一个iptables规则来拒绝违规的主机。 我已经尝试了这两个答案的build议,但我仍然无法得到它的工作。 除了链接的post之外,我正在尝试运行本文所述的脚本。 我的Apacheconfiguration有这个 DOSSystemCommand "sudo -u root /root/scripts/ban_ip.sh %s" 脚本有这个 #!/bin/sh IP=$1 IPTABLES=/sbin/iptables $IPTABLES -A banned -s $IP -p TCP -j DROP echo "$IPTABLES -D banned -s $IP -p TCP -j DROP" | at now + 5 minutes 我创build了一个“禁止”链(我也试图把它添加到INPUT链无济于事) 我的/ etc / sudoers看起来像这样: apache ALL=(root) NOPASSWD: /root/scripts/ban_ip.sh * 我禁用了SELinux,以确保它不会阻碍。 我可以su apache –shell=/bin/bash并运行sudo /root/scripts/ban_ip.sh 10.10.10.10 […]

redirect永久/ https://www.mysite.com/例外

我有一个网站,通过ssl完全servered。 我需要通过http允许在单个页面上的外部连接。 目前在我的http.conf中有 <VirtualHost *:80> .. Redirect permanent / https://www.mysite.com/ .. </VirtualHost> 我想在这里添加一个例外,我只想要一个特定的页面,而不是通过redirect,如果可能的http … http://www.mysite.com/directory/page.php 我尝试添加以下内容,但是这当然本身工作得很好,但是与上面的内容一起创build了redirect循环。 <VirtualHost *:443> .. RewriteEngine on RewriteCond %{SERVER_PORT} ^443$ RewriteRule ^/directory/page$ http://www.mysite.com/directory/page.php [R=301,L] .. </VirtualHost>

使用SNI停止共享IP上的默认SSL响应

以前我在这里问过一个问题: 在共享IP上为所有域提供的单域SSL关于在单个IP上设置安全和非安全域。 意见不一,但似乎SNI持有解决scheme。 不幸的是,我不能按要求工作。 https://domaina.com – 按预期工作 https://domainb.com – 介绍domaina.com证书,而不是预期的。 我希望它不响应SSL请求。 我希望我的服务器只发送domaina.com的证书domaina.com发送其他主机名,即使这意味着向非SNI客户端发送403错误。 我在香草Ubuntu Server 12.04 LTS上的当前configuration如下: Ports.conf … <IfModule mod_ssl.c> NameVirtualHost *:443 Listen 443 </IfModule> … 域虚拟主机 <VirtualHost *:80> ServerName domaina.com ServerAlias www.domaina.com DocumentRoot /var/www/domaina.com/public ErrorLog /var/www/domaina.com/logs/error.log CustomLog /var/www/domaina.com/logs/access.log combined </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> ServerName domaina.com ServerAlias www.domaina.com DocumentRoot /var/www/domaina.com/public SSLEngine on SSLCertificateFile /etc/apache2/ssl/domaina.com.crt […]

使用非root用户将git repo部署到web根目录

设置使用git部署到服务器的生产Web服务器的用户和权限的最佳方法是什么? 背景 运行Ubuntu 12.04,我在/var/www下将Apache服务文件作为www-data 。 我在root用户目录下也有一个纯粹的git repo,它将在post-receive hook中检出到/var/www/example.com 。 这工作得很好,但考虑到它是一个生产服务器,我想扣上一些安全性,并从根用户删除回购。 所以我创build了一个git用户,并在/home/git下设置了repo。 但现在我有权限问题的事实,一个用户拥有回购,而另一个用户拥有网站的根。 我在网上阅读了很多论坛和教程。 大多数似乎只是使用root用户,其他人似乎有更糟糕的安全问题(如通过回购给www-data读取权限)。 我正在寻找真实世界的经验,因为有很多方法可以做到。 作为一个说明,后接收钩不仅仅是结帐。 它还执行一些构build过程,如运行Composer和一些其他的PHP脚本,可能需要几分钟的时间。 我尝试了几个解决scheme: 我尝试将git用户添加到www-data group ,然后将web根目录重新命名为www-data 。 这有两个问题。 首先,我必须修改sudoers文件,我从中得到的结果是碰撞和错过。 其次,在钩子运行的几分钟内,检出的文件由git拥有,而不是www-data ,因此站点上的用户可能会读取错误。 我试着把post-receive的内容放在另一个文件中,然后用sudo执行。 同样,这需要编辑sudoers文件,以便git用户可以不使用密码sudo。 或者,可能是将根目录下的回购权限放在了较小的位置,我无所作为。 有没有更好的解决scheme,我还没有尝试过?

如何在Apache中合并多个ProxyPass指令?

由于我们使用以下forms的部署系统,因此我需要将ProxyPassconfiguration保留在单独的文件中: 文件1: <VirtualHost *:80> <Location /qa1/> ProxyPass http://localhost:8800/qa1/ ProxyPassReverse http://localhost:8800/qa1/ ProxyPassReverseCookiePath / /qa1/ </Location> </VirtualHost> 文件2: <VirtualHost *:80> <Location /qa2/> ProxyPass http://localhost:8801/qa2/ ProxyPassReverse http://localhost:8801/qa2/ ProxyPassReverseCookiePath / /qa2/ </Location> </VirtualHost> 但是Apache抱怨说:[warn] 默认的 VirtualHost在80端口重叠,第一个优先 任何想法,如果/如何可能让Apache合并这两个configuration?

野兽/犯罪/海滩攻击和停止它

我已经阅读了所有这些,但不完全确定我明白发生了什么。 另外,这是一个,两个还是三个问题? 它看起来像三个,但这一切都非常混乱: Beast CRIME Beach 似乎解决scheme可能是简单地不使用HTTPSstream量压缩(或者只是其中之一?) 我使用GZIP压缩。 没关系,还是问题的一部分? 我也使用Ubuntu 12.04 LTS 另外,是非HTTPSstream量好吗? 所以读完所有的理论后,我只想要解决scheme。 我认为这可能是解决办法,但有人可以确认我已经了解了一切,所以我不太可能遭受这种攻击: SOLUTION: Use GZIP compression on HTTP traffic, but don't use any compression on HTTPS traffic

我可以configurationapache / mod_wsgi,以便别名URLpath在到达我的Django应用程序之前不被剥离?

我想configurationApache来承载一个Django的web服务和一个PHP网站。 所有使用www.mysite.com/api模式的url都应该被定向到Django服务。 所有其他url(例如www.mysite.com )应该被引导到PHP网站。 我的虚拟主机configuration如下所示: … WSGIScriptAlias /api /var/www/mysite.com/apache/django.wsgi <Directory /var/www/mysite.com/apache> Order allow,deny Allow from all </Directory> Alias / /var/www/mysite.com/apache/php/ <Directory /var/www/mysite.com/apache/php> Options Indexes FollowSymLinks AllowOverride All Order Deny,Allow Allow from all </Directory> … 这将每个请求指向正确的处理程序。 但是,我的Django的urls.py看起来像这样: … api_patterns = patterns('', url(r'^api/1.0/$', views.api_root), url(r'^api/1.0/oauth/', include('oauth2_provider.urls', namespace='oauth2_provider')), … 这不匹配任何url,因为它期望他们以api开头。 这个前缀当然是在它到达之前被剥离的(当请求到达这里时,它们的格式是1.0/oauth等)。 有没有办法将完整的URL传递给Django? 解 mod_wsgi的作者Graham Dumpleton提出了一些解决这个问题的方法,两者都起作用(见下面的接受答案)。 我去了他在UPDATE 1build议的解决scheme。追加/api文件path解决了这个问题: WSGIScriptAlias […]