针对初学者和中级人员的 25 个 Apache 面试问题
我们非常感谢所有读者对我们新推出的Linux 面试部分的反馈。现在我们已经开始分部分学习面试问题,今天的文章将重点介绍初级到中级Apache 面试问题,以帮助您做好准备。
在本节中,我们介绍了一些有趣的25 个 Apache 面试问题及其答案,以便您可以轻松了解一些您以前可能从未知道过的有关 Apache 的新事物。
在阅读本文之前,我们强烈建议您不要尝试记住答案,而应始终首先尝试在实际基础上理解场景。
1.什么是 Apache 网络服务器?
2.如何检查Apache及其版本?
[root@example ~]# rpm -qa | grep httpd httpd-devel-2.2.15-29.el6.centos.i686 httpd-2.2.15-29.el6.centos.i686 httpd-tools-2.2.15-29.el6.centos.i686
[root@example ~]# httpd -v Server version: Apache/2.2.15 (Unix) Server built: Aug 13 2013 17:27:11
3. Apache 以哪个用户身份运行?主配置文件位于何处?
4. Apache 在哪个端口上监听 http 和 https?
[root@example ~]# netstat -antp | grep http tcp 0 0 :::80 :::* LISTEN 1076/httpd tcp 0 0 :::443 :::* LISTEN 1076/httpd
5. 如何在 Linux 机器上安装 Apache 服务器?
[root@example ~]# yum install httpd
[root@example ~]# apt-get install apache2
6. 在哪里可以找到 Apache Web Server 的所有配置目录?
[root@example ~]# cd /etc/httpd/ [root@example httpd]# ls -l total 8 drwxr-xr-x. 2 root root 4096 Dec 24 21:44 conf drwxr-xr-x. 2 root root 4096 Dec 25 02:09 conf.d lrwxrwxrwx 1 root root 19 Oct 13 19:06 logs -> ../../var/log/httpd lrwxrwxrwx 1 root root 27 Oct 13 19:06 modules -> ../../usr/lib/httpd/modules lrwxrwxrwx 1 root root 19 Oct 13 19:06 run -> ../../var/run/httpd
[root@example ~]# cd /etc/apache2 [root@example apache2]# ls -l total 84 -rw-r--r-- 1 root root 7113 Jul 24 16:15 apache2.conf drwxr-xr-x 2 root root 4096 Dec 16 11:48 conf-available drwxr-xr-x 2 root root 4096 Dec 16 11:45 conf.d drwxr-xr-x 2 root root 4096 Dec 16 11:48 conf-enabled -rw-r--r-- 1 root root 1782 Jul 21 02:14 envvars -rw-r--r-- 1 root root 31063 Jul 21 02:14 magic drwxr-xr-x 2 root root 12288 Dec 16 11:48 mods-available drwxr-xr-x 2 root root 4096 Dec 16 11:48 mods-enabled -rw-r--r-- 1 root root 315 Jul 21 02:14 ports.conf drwxr-xr-x 2 root root 4096 Dec 16 11:48 sites-available drwxr-xr-x 2 root root 4096 Dec 6 00:04 sites-enabled
7. Apache 可以使用 TCP 包装器来保护吗?
8. 如何更改默认 Apache 端口以及 Listen 指令如何在 Apache 中工作?
假设您的 Linux 机器分配了多个 IP,并且希望 Apache在特殊的以太网端口或接口上接收HTTP请求,甚至可以使用 Listen 指令来完成。
要更改 Apache 默认端口,请使用VI编辑器打开 Apache 主配置文件httpd.conf或apache2.conf文件。
[root@example ~]# vi /etc/httpd/conf/httpd.conf [root@example ~]# vi /etc/apache2/apache2.conf
搜索单词“ Listen ”,注释掉原来的行并在该行下面写下你自己的指令。
# Listen 80 Listen 8080 OR Listen 172.16.16.1:8080
保存文件并重新启动 Web 服务器。
[root@example ~]# service httpd restart [root@example ~]# service apache2 restart
9. 我们可以在一台机器上安装两个 Apache Web 服务器吗?
10.Apache的DocumentRoot是什么意思?
11. 如何在不同的文件夹中托管文件以及 Alias 指令是什么?
要使用 Alias 指令,它是 Apache 的mod_alias模块的一部分。Alias 指令的默认语法是:
Alias /images /var/data/images/
在上面的例子中,/images url 前缀为/var/data/images前缀,这意味着客户端将查询“ http://www.example.com/images/sample-pwvcfmshqyyrkkojnhplwldtdcaqxtpd.png ”,Apache 将从服务器上的/var/data/images/sample-pwvcfmshqyyrkkojnhplwldtdcaqxtpd.png中获取“ sample-pwvcfmshqyyrkkojnhplwldtdcaqxtpd.png ”文件。这也称为 URL 映射。
12. 你对“DirectoryIndex”有怎样的理解?
DirectoryIndex 的默认设置是.html index.html index.php ,如果您的第一个文件有不同的名称,则需要在httpd.conf或apache2.conf中更改DirectoryIndex 值以将其显示在您的客户端浏览器中。
# # DirectoryIndex: sets the file that Apache will serve if a directory # is requested. # # The index.html.var file (a type-map) is used to deliver content- # negotiated documents. The MultiViews Option can be used for the # same purpose, but it is much slower. # DirectoryIndex index.html index.html.var index.cgi .exe
13. 当索引文件丢失时如何禁用目录列表?
要停止 Apache 目录列表,您可以在全局主配置文件中或特定网站的.htaccess文件中设置以下规则。
<Directory /var/www/html> Options -Indexes </Directory>
14. Apache Web 服务器有哪些不同的日志文件?
15. 你对错误日志中的“connection reset by peer”如何理解?
16. Apache 中的虚拟主机是什么?
您可以自由地为您的域名添加任意数量的指令,但正常运行的网站的两个最小条目是 ServerName和DocumentRoot 。我们通常在 Linux 机器上的httpd.conf文件底部定义虚拟主机部分。
示例虚拟主机
<VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /www/docs/dummy-host.example.com ServerName dummy-host.example.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost>
- ServerAdmin:通常是网站所有者的电子邮件地址,可以发送错误或通知。
- DocumentRoot:网络文件在服务器上所在的位置(必需)。
- ServerName:这是您想要从 Web 浏览器访问的域名(必需)。
- ErrorLog:它是记录所有域相关日志的日志文件的位置。
17. <Location> 和 <Directory> 有什么区别?
- <Location>用于设置与 Web 服务器的 URL/地址栏相关的元素。
- <Directory>指的是服务器上文件系统对象的位置
18. 什么是 Apache 虚拟主机?
欲了解更多信息,请阅读如何在 Apache 中创建基于名称/IP 的虚拟主机。
19.你对 Apache 中的 MPM 有何了解?
20.Worker 和 Prefork MPM 有什么区别?
- Worker 和 MPM 之间的基本区别在于它们生成子进程的过程。在 Prefork MPM 中,会启动一个主 httpd 进程,该主进程会启动并管理所有其他子进程以处理客户端请求。而在 Worker MPM 中,一个 httpd 进程处于活动状态,它使用不同的线程来处理客户端请求。
- Prefork MPM使用多个子进程,每个子进程有一个线程,而 worker MPM 使用多个子进程,每个子进程有多个线程。
- Prefork MPM 中的连接处理,每个进程一次处理一个连接,而在 Worker mpm 中每个线程一次处理一个连接。
- 内存占用Prefork MPM内存占用较大,而Worker内存占用较小。
21.“LimitRequestBody”有什么用处以及如何限制上传量?
例如:我想将文件夹/var/www/html/tecmin/ uploads 的大小限制为100000 字节。因此,您需要在 Apache 配置文件中添加以下指令。
<Directory "/var/www/html/example/uploads"> LimitRequestBody 100000 </Directory>
22. 什么是mod_perl和mod_php?
- mod_perl是一个 Apache 模块,它与 Apache 一起编译,以便于集成并提高 Perl 脚本的性能。
- mod_php用于 Web 服务器轻松集成 PHP 脚本,它将 PHP 解释器嵌入 Apache 进程中。它强制 Apache 子进程使用更多内存,并且仅适用于 Apache,但仍然非常流行。
23.什么是Mod_evasive?
欲了解更多信息,请阅读指导您如何在 Apache 中安装和配置 mod_evasive的文章。
24. httpd.conf 文件中的 Loglevel debug 是什么?
25. mod_ssl 有什么用途以及 SSL 如何与 Apache 协同工作?
SSL 如何与 Apache 配合使用
每当收到 https 请求时,Apache 都会遵循以下三个步骤:
- Apache 生成其私钥并将该私钥转换为.CSR文件(证书签名请求)。
- 然后 Apache 将.csr文件发送给CA(证书颁发机构)。
- CA 将获取.csr文件并将其转换为.crt(证书),然后将该.crt文件发送回 Apache 以保护并完成 https 连接请求。
这些只是面试官最近最常问的25 个问题,请通过下面的评论部分提供一些您在最近的面试中遇到的面试问题,以帮助其他人。
我们还建议您阅读我们之前关于 Apache 的文章。
此外,我们很自豪地宣布,Example Ask问答部分的Beta 版已经推出。如果您对任何 Linux 主题有疑问,请加入我们并在 Ask 上发布您的问题/疑问。
我将在以后的文章中提出更多有关DNS、邮件服务器、PHP等的面试问题,在此之前,请保持Geeky并连接到Example.com。