Articles of apache 2.2

在没有提供静态内容的网站(Django)上使用反向代理的原因是什么?

对于我正在开发的网站,我所有的静态内容都是在S3 / Cloudfront的组合外托pipe的。 我一直在寻找很多关于将Django应用程序部署到生产环境的教程,其中很多人都推荐使用Nginx(反向代理)+ Apache。 这是在Ngnix将被用于提供静态内容的假设下陈述的,而Apache将完成所有繁重的工作。 当没有任何静态内容可用时,是否有任何其他原因需要使用反向代理? 或者在这种情况下,我可以简化我的服务器设置,只使用Apache?

共享虚拟主机的分发/设置

我目前正在pipe理一个Gentoo服务器,为有共同兴趣的朋友和人们提供几十个网站。 我可能会很快转移到新的服务器,并有可能切换到另一个操作系统。 我很享受Gentoo让我修补USE标志的能力,并在编译和安装之前自动修补上游源代码,但是它确实有一些怪癖(tail和cron具有微妙的破坏行为 , 内核cgroups代码中的死锁 ,正在安装的文件与随机破坏的权限),维护可以相当大(我似乎无法更新perl没有打破一半的系统)。 我猜想对于共享主机系统来说,最重要的是两件事:安全性和稳定性。 虽然我通常相信我的用户不要做任何故意恶意的行为,但我不能相信他们永远不会允许他们的帐户受到攻击(例如安装并不更新已发现漏洞的Web应用程序)。 用户不应该能够访问其他用户的数据,干扰其他网站的可访问性或垃圾服务器。 CentOS似乎在服务器上非常受欢迎,尽pipe我个人对rpm / yum的经验有限,让人感到沮丧(花了一个小时才安装了一个软件包)。 我也听到了关于Ubuntu服务器的好东西。 还是应该坚持我熟悉的方式,并希望我的Gentoo问题只是错误configuration或积累的结果,而不会在一个干净的安装中显示? (CentOS和Ubuntu服务器随附SELinux / AppArmor,Gentoo拥有Hardened Gentoo项目。) 还有一个Apacheconfiguration的问题…使用标准的MPM运行mod_php是不可能的,因为它允许脚本访问所有用户的数据。 CGI要慢很多。 我现在正在使用itk MPM,它似乎工作正常,但我不知道是否有更好的解决scheme – 大型共享主机提供商(DreamHost等)如何做呢?

Apache永久redirect不起作用

尝试在Apache中redirect旧的URL。 但我无法弄清楚这是什么问题: <Directory "/home/site/www/"> RewriteEngine On Options +FollowSymLinks Redirect permanent /test http://www.google.com </Directory> redirect根本不起作用。 我错过了什么? 我input浏览器http:// site / test ,它给了我404错误。 从Apache日志: [Mon May 23 18:07:09 2011] [error] [client XXXXXX] File does not exist: /home/site/www/test Apache / 2.2.16(Ubuntu)

PUT请求结果403禁止 – 需要Apache来允许PUT请求

我正在构build一个RESTFUL API,并且需要让Apache接受PUT请求。 每当我把一个URL,我得到一个403 Forbidden错误。 curl -X PUT api.example.com/api/foo 我试图添加以下到我的虚拟目录(无济于事): <Limit GET POST PUT DELETE HEAD OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST PUT DELETE HEAD OPTIONS> Order deny,allow Deny from all </LimitExcept> <Limit GET POST PUT DELETE HEAD OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST PUT DELETE HEAD OPTIONS> […]

Apache CGI脚本不能覆盖它具有完全权限的目录中的文件

在Solaris 10上有一个奇怪的问题。 我有一个cgi脚本(Perl)需要覆盖文件。 我们没有在Apache上运行suexec,所以目标目录有完整的(777)访问权限,以便Apache可以写入。 问题是CGI脚本能够将新文件写入目录,但不能覆盖现有文件。 **Directory permissions for file destination:** drwxrwxrwx 146 myuser white 32768 Jun 2 20:46 dest-dir **File Permissions of file that needs to be over written:** -rw-r–r– 1 myuser white 0 Jun 2 20:50 cgitestfile 任何人都知道解决这个简单的解决scheme? 看起来像apache只能覆盖一个文件,如果它拥有它。

尝试更改用户Apache运行,并在使用会话时出现错误

我已经改变了Apache运行的用户,并试图在PHP中使用会话时获得以下内容: 警告:未知:打开(/ var / lib / php / session / sess_phbfugace53ngs8kt9pdgovf21,O_RDWR)失败:权限被拒绝(13) 警告:未知:无法写入会话数据(文件)。 请确认session.save_path的当前设置在第0行的Unknown中是正确的(/ var / lib / php / session) 我运行chown myuser /var/lib/php/session并仍然出错。 我还需要做什么?

Apache mod_auth_basic和Ordering

我有Apache安装程序通过ldap为我的用户使用活动目录进行身份validation。 有一些“系统”用户(用于自动构buildtesting),通过文件手动设置和validation。 AuthBasicProvider ldap file 我遇到的问题是Active Directory框会因为维护或其他原因而不得不停下来,我不希望我的“系统”用户在那段时间被拒绝访问。 我想要Apache尝试authentication文件,然后ldap,但这似乎不可能。 根据http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html ,“处理的顺序是在模块的源代码中确定的,不可configuration”。 这似乎不正确。 我想可以(经常)指定auth提供者的顺序(如果不是因为其他原因我想要的话)。 没有黑客源代码没有办法做到这一点? ps将configuration更改为AuthBasicProvider file ldap没有区别。

基于GETvariables的Mod_Rewriting

所以 – 我用mod重写了几千次来改变url.tld / show / season / 1来加载video.php?show = someshow&season = 1。 但是 – 现在我需要做相反的事情,显示一个临时的HTML页面,而不是在这些页面上提供PHP。 myshows.com/seasons/?sid=1 我试过做一个重写cond包括?,但似乎从来没有工作。 RewriteRule ^ / seasons / \?sid = 1 migrating.html 编辑我需要确保唯一的页面是SID = 1,而不是任何其他可能的季节ID 有任何想法吗?

用SELinux启用mod_wsgi(有没有办法?)

我最近遇到了一些问题,最近由于SELinux部署了使用mod_wsgi的Django。 世界通常会得到“权限被拒绝”的错误(403)。 这是通过禁用SELinux解决的。 在启用SELinux的情况下有没有办法使用mod_wsgi? 现在,如果我要将我的djcode文件夹移动到/ usr / local /这将工作,但如果djcode文件夹存储在/ usr / local / src / djcode,它会再次给我这个错误。 Cannot load /etc/httpd/modules/mod_wsgi.so into server: /etc/httpd/modules/mod_wsgi.so: cannot restore segment prot after reloc: Permission denied 我看了一些日志,它说: SElinux is preventing the httpd from using potentially mislabel files ./src (src_1) 那么我怎样才能让httpd使用src文件夹呢?

将Mercurial用户名replace为经过Apachevalidation的用户名

我有一个Debian 6 x64,python2.6,Apache 2.2,Mercurial 1.8。 Mercurial通过HTTPS访问,python使用mod_wsgi ,Apache使用mod_authnz_external执行“Authentication:Basic”。 我需要的是replace用户提供的Mercurial用户名。 因此,如果用户将用户名configuration为“JD”,但是以用户名“[email protected]”login,我想在Mercurial提交历史logging中看到“[email protected]”。