Articles of httpd

为什么rhel / centos以这种方式存储apache conf文件?

我已经开始在一个新的工作中pipe理一系列基于CentOS的networking服务器,并且在使用基于Debian的Linux服务器几年之后,我对apache文件结构非常熟悉,如下所示: /etc/apache2 apache2.conf conf.d/ envvars mods-available mods-enabled ports.conf sites-available sites-enabled 这对我来说是有意义的,对我来说可用但不一定在使用的mod-available ,而用户中的mods-enabled ,同样也可以直接与sites使用。 当然,这些主要是符号链接,但我可以理解为什么这样做, 来到系统新鲜我有一个粗略的想法是什么在系统上,通过查看相关*enabled目录。 比较而言,CentOS的设置是这样的: /etc/httpd conf conf.d logs -> ../../var/log/httpd modules -> ../../usr/lib64/httpd/modules run -> ../../var/run 我可以理解,我可以通过调用apachectl -S来查看哪些主机已启用,并且可以使用apachectl -M来查看这些模块,将/conf.d/example.conf重命名为conf.d/example.conf.disabled将允许我禁用网站也相当简单,但我不明白为什么这些是不同的,现在,我不知道这样做的好处。 是否有任何网页,博客文章或网站可以帮助解释两者之间的差异,还有可能是为什么他们这样设置? 现在我盲目地遵循我在标准CentOS文件系统中看到的惯例,而不理解为什么,当我至less期望它的时候,我不禁感到会咬我,比如当我在selinux的权限层上大错,或者相似的东西。

Apache在其名称中使用“.var ”作为types映射

所以今天在工作中遇到了一个奇怪的问题。 我写的一个应用程序有一个名为form.sales.var.js的JavaScript文件,放在与其他JS文件相同的目录中。 但是,当浏览器尝试加载JS文件时,服务器返回了500 Internal Server Error页面。 Apache日志显示条目: Syntax error in type map, no ':' in /var/www/… 随后是文件path的其余部分和文件的内容。 我在Google上对这个问题做了一些研究,发现这可能是由包含.var.的文件名造成的.var. ,导致Apache将其视为types映射 。 由于不是,会发生语法错误。 我现在的问题是: 为什么当文档说types映射是*.var文件时, .js文件被视为types映射? 是不是只是我的Web服务器configuration错误,或者其他人可以testing,看他们的Web服务器是否产生与名为something.var.something文件相同的错误? 为什么没有这个问题的文档,为什么它很less被报道,即使这种行为似乎自Apache 1.3以来已经存在? 这似乎是一个更常见的问题。 常用的是types图吗? 在Apache中禁用它们是否有任何可预见的问题? 解决这个问题的最好方法是什么(除了重命名文件并且不使用包含.var.文件名)?

安装了Apache服务器,无法从外部连接(在WMware中使用CentOS)

我在CentOS 5.5中安装了Apache,在search了Web上的configuration提示之后,我做了以下操作来启用从外部连接HTTP服务器: 在/etc/httpd/conf/httpd.conf中,我将Listen值更改为0.0.0.8011 我检查了netstat -anp ,我确实看到Apache正在监听这个端口 将httpdconfiguration为服务: chkconfig –levels 235 httpd on 使用semanage端口启用端口-a -t http_port_t -p tcp 8011 在iptables中,我设置了iptables -A INPUT -d 10.1.15.1 -p tcp –dport 8011 -j ACCEPT /etc/init.d/iptables保存活动 重新启动服务器 但是我仍然无法从外部连接,甚至不能使用telnet连接 。 顺便说一下,FTP和SSH在这个IP地址上工作得很好,我可以ping到VMware服务器。 好,我一直在编辑我的问题:现在当我停止防火墙(iptables),我可以连接就好,所以我想我的问题是如何正确地configurationiptables接受端口8011上的http连接?

以用户www的身份在命令行上运行cgi-script?

我正在运行FreeBSD 7和apache-2.2.13。 我想在http://www.example.org/cgi-bin/printenv上debugging一个cgi脚本。 这个脚本是一个用Bourne shell编写的简单的脚本。 我想从Unix命令行运行这个脚本,用户名为“www”。 但是,用户'www'没有shell(按devise)。 这意味着我不能'su'用户'www'来执行这个脚本: # su www -c /usr/local/www/apache22/cgi-bin/printenv This account is currently not available. # su – www -c /usr/local/www/apache22/cgi-bin/printenv su: no directory 我怎样才能以用户'WWW'运行这个脚本?

httpd,vsftpd和烦人的selinux

我有一个安装了httpd运行和vsftpd的CentOS 6.3,但是我无法平衡用户能够通过ftp上传和他们的网站工作的权限。 我做的事: I create a user with their home directory as `/home/username` I create a sub folder called `html` for their website I chown their directory `chown -R username:apache /home/username` I chmod their directory `chmod -R 750 /home/username` I chcon their directory `chcon -R -t httpd_sys_rw_content_t /home/username` 和他们的网站加载好,但他们无法FTP,但如果我做以下,他们可以FTP但他们的网站不加载: chcon -R -t user_home_dir_t /home/username 如果我禁用selinux,用户可以ftp和网站加载。 […]

浏览器支持的SSL密码列表

不太确定这是否是适当的SE发布此,但在这里:是否有一些在线参考什么SSL密码支持各种浏览器? 基本上,我感兴趣的是通过确保较低的密钥长度和旧的污垢algorithm(DES和3DES)不被用于与客户的通信来加固系统。 这样做的方式(至less在Apache mod_ssl中)似乎是控制服务器在握手期间给予的支持的密码。 我想能够回答像“如果我强迫AES256,哪些浏览器将打破?”的问题。 对于某些网站来说,这是可取的,因为它为我们保密的交谈提供了一些保证。 如果他们的浏览器只支持被认为是不安全的连接,我们希望会话中断,所以他们被迫使用更现代/强大的客户端。

通过ProxyPassMatch作为处理程序转发PHP请求,或者仅在文件存在时转发

我正在迁移我的服务器使用mod_proxy_fcgi和php-fpm而不是mod_php。 Apache能够将.php请求转发到fcgi代理,PHP正确执行。 我有这个工作: ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 不幸的是,即使文件不存在,Apache也会将所有.php请求转发给代理。 这导致一些问题。 我的ErrorDocument规则不会被调用,而DirectoryIndex index.php index.html不会退回到index.html。 我能用mod_rewrite修复这些问题: RewriteEngine On RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$ RewriteCond /var/www/html/%2 -f RewriteRule . fcgi://127.0.0.1:9000/var/www/html/%1 [P] 但是,Apache文档不build议使用RewriteRule :“这是因为这个标志触发了使用默认的worker,它不处理连接池。 理想情况下,我想要在FileMatch块中使用ProxyPass(当前不支持),或者定义一个新的处理程序,通过fcgi代理并使用它来处理.php请求,类​​似于mod_php。 任何build议模拟标准的mod_php设置,但实际上通过fcgi代理?

没有networking用户界面或更改端口的FreeIPA

我可以安装FreeIPA服务器没有httpd(没有networking用户界面)? 或者至less我可以改变端口? (80→8880和443→8443)

从Apache 2.2迁移到2.4,ssl.conf被忽略

我正在使用Apache 2.4进行EL7的testing安装。 我将现有的/etc/httpd/conf.d/ssl.conf复制到新系统中,build立了selinux,validation了所有的certpath都是kosher, systemctl httpd start了这个服务。 Apache运行无错误。 问题是我的ssl.conf文件被忽略。 我正在使用默认的Apache页面显示 我尝试将/etc/httpd/conf.d/ssl.conf移动到/etc/httpd/conf.modules.d/ (首先删除现有的00-ssl.conf文件),结果相同。 我在哪里错了? 编辑1错误日志显示这个: AH01630: client denied by server configuration: /www/virtualhosts/example.com 我的SSLconfiguration有这样的地方: DocumentRoot /www/virtualhosts/example.com 和 ll /www/virtualhosts/example.com total 4 -rw-r–r–. 1 apache apache 21 Dec 18 14:32 index.php index.php包含: <p>Hello World 我不知所措

Apache产生了大量的httpd进程

我运行一个简单的networking服务器设置(Apache / 2.2.15,PHP / 5.3.3,MySQL / 5.1.66)的CentOS 6.7机器(16 GB vRAM,8个vCPU),托pipe一个网上商店,数量适中页面展示次数(每天约2,000〜4,000次)。 服务器在过去的三年中运行平稳,无需更改其configuration。 现在,从上个星期以来 – 不知何故,在短时间(大约30分钟)之后,Apache / HTTP经常变得无法访问。 我检查了一些参数,看到有很多httpd进程正在运行。 ps axf | grep httpd | wc ps axf | grep httpd | wc显示了这样的内容: 387 2344 18354 而负载不是很令人兴奋。 top看起来像这样: 有一小部分httpd进程会不时被释放,但总数却几乎不断增加。 如果我运行一个service httpd reload ,进程数回落到0,并在接下来的几分钟到几小时内再次增加。 过了一会儿,Apache的日志告诉我: [error] server reached MaxClients setting, consider raising the MaxClients setting 我做了这个,我也调整了不同的进一步的configuration参数,但它没有帮助。 无论MaxClients和ServerLimit设置为什么值,Apache都不会停止产生新的httpd进程,直到达到这些限制。 在此之后,网站无法访问了。 […]