44个实用的Apache Web服务器面试问题及答案

Apache是最流行的Web服务器,如果你打算从事中间件/系统/网络管理员的工作,那么你必须熟悉它。Apache HTTP是一个开源的Web服务器,适用于Windows和UNIX。

几天前,我写了一篇关于WebSphere Interview Questions的文章,很多人要求我写关于Apache Web服务器的文章,那么现在就来吧。

下面的问题经常在面试中问到,从初学者到专家水平。大多数组织都会由中间件/系统管理员负责Web服务器以及应用服务器和其他组件的管理。

让我们开始实时面试问题和答案

1. 如何停止/启动Apache Web服务器?

你可以进入Apache实例的位置>> bin文件夹并执行apachectl脚本来重启。

./apachectl stop
./apachectl start

你也可以使用位于/etc/init.d/目录下的脚本。大多数情况下,脚本的名称要么是“apache”,要么是“httpd”

/etc/init.d/apache stop
/etc/init.d/apache start

另一种方法是使用services命令

httpd stop
service httpd start

2. HTTP和HTTPS的默认端口是多少?

HTTP的默认端口是80,HTTPS的默认端口是443。查看其他应用程序的默认端口listed here

3. 你能告诉我重要的配置文件名称是什么吗?

httpd.conf是Apache中使用的主要配置文件。

4. 如何检查正在运行的Apache Web服务器的版本?

有多种方法可以找到这个版本,但更准确的方法是:

  • 登录到Web服务器
  • 进入apache实例和bin文件夹
  • 执行httpd -v命令以获取版本详细信息。
[root@lab sbin]# ./httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Jul 18 2016 15:24:00
[root@lab sbin]#

或者,你也可以使用rpm命令来检查已安装的版本。

[root@lab ~]# rpm -qa |grep httpd
httpd-2.2.15-54.el6.centos.x86_64
httpd-tools-2.2.15-54.el6.centos.x86_64
[root@lab ~]#

5. 如何知道Web服务器是否正在运行?

有多种方法可以找到这个。

  1. 登录到Web服务器并grep“httpd”进程
ps -ef |grep httpd
  1. 检查你的monitoring dashboard中是否有任何警报。
  2. 检查你的Apache IP:端口是否在浏览器中可访问

例如:http://yourapacheserver.com

  1. 使用netstat检查服务器上配置的IP和端口是否正在监听
netstat -anlp |grep 80

6. 如何安装Apache HTTP?

有三种可能的安装方法。

使用源代码 – 你可以下载源代码并进行编译。

tar xvf  httpd-1.2.3.tar
gzip -d httpd-1.2.4.tar.gz
  • 使用cd命令导航到你提取的源文件的位置,并使用终端上的./configure命令对其进行配置
  • 然后使用make命令进行编译。
  • 最后,使用make install命令进行安装。

如果你想了解更多配置方法的选项,可以使用configure –help命令。

YUM存储库 – 如果你的服务器连接到Internet或有一个内部存储库,那么可以使用yum进行安装。

yum install httpd

RPM – 你可以下载所需的RPM package并使用rpm命令安装。

rpm -ivh packagename.rpm

7. 如何确保Apache只监听服务器上的一个IP地址?

当服务器上有多个IP时,通常需要这样做。为了确保Apache仅侦听指定的IP,您需要在Listen指令中明确指定IP和端口。

示例:

Listen 10.10.10.10:80

8. 如何确保Apache以非root/nobody用户运行?

可以通过在httpd.conf文件中添加User和Group指令来实现。

User apache
Group apache

上述配置示例将确保它以“apache”用户启动。在配置之前,您必须确保服务器上存在该用户。

9. 如何禁用目录索引?

您可以在相应的目录指令中使用“Options -Indexes”。

示例:


       Options -Indexes

10. 哪个模块是实现重定向所必需的?

mod_rewrite负责重定向,必须在httpd.conf文件中取消注释。

LoadModule rewrite_module modules/mod_rewrite.so

11. 您可以将监听端口从默认值更改为其他值吗?

是的,可以通过在Listen指令中指定端口号来实现。

示例:将Apache监听9000端口和10.10.10.10 IP地址。

Listen 10.10.10.10:9000

12. 如何保护托管在Apache Web服务器上的网站?

有多种方法可以保护网站,包括以下方法:

  • 实施SSL
  • 与WAF(Web应用程序防火墙)集成,例如ModSecurity等
  • 使用link_7

13. Apache生成哪些日志文件?

有两个常见的日志文件:

  • access.log – 所有请求的详细信息以及link_8
  • error.log – 捕获了apache内部错误或与后端的连接错误

14. 如何创建CSR(证书签名请求)?

您可以使用以下OpenSSL命令或link_9

创建带有私钥的新CSR

openssl req -out yaoweibin.csr -newkey rsa:2048 -nodes -keyout yaoweibin.key

查看link_10以获取更多命令。

15. 什么是虚拟主机?

Apache中的虚拟主机允许您在单个实例上托管多个网站。您可以创建基于IP的虚拟主机或基于名称的虚拟主机。

16. 连接到WebSphere需要哪个模块?

必须在httpd.conf文件中添加mod_was_ap22_http.so以与IBM WAS集成。

17. 如何将日志级别设置为调试模式?

当您正在故障排除问题并希望捕获更多详细信息时,通常需要这样做。您可以通过确保httpd.conf文件中包含以下内容将日志级别更改为debug。

LogLevel debug

18. 启用SSL需要哪个模块?

在SSL实现之前,必须取消注释mod_ssl模块。

LoadModule auth_basic_module modules/mod_ssl.so

19. WebLogic模块名是什么?

mod_wl_22.so

20. Apache中有哪些日志级别可用?

默认配置设置为“warn”,但也可以使用以下级别。

  • debug
  • info
  • warn
  • notice
  • crit
  • alarm
  • emerg
  • error

21. 什么是DocumentRoot?

DocumentRoot指令是配置中您可以指定静态文件的文件夹位置。它也被称为WebRoot。

默认DocumentRoot位置为/var/www/html

22. 如何在Apache中部署war或Java应用程序?

恐怕Apache是一个Web服务器,无法使用它部署基于Java的应用程序。但是,您可以集成Java应用程序服务器,如WebLogic,WebSphere,JBoss,从而可以部署war、ear文件。

23. Apache Web服务器和Apache Tomcat之间有什么区别?

Apache Web是一个用于提供静态内容的HTTP服务器,而Tomcat是一个用于部署JSP文件的servlet容器。

您始终可以将Apache HTTP与Tomcat集成,但是根据需求选择其中之一。如果您需要一个适当的Web服务器,那么选择Apache HTTP,否则选择Tomcat作为JSP-Servlet容器。

24. Apache如何充当代理服务器?

您可以使用mod_proxy模块作为代理服务器。 mod_proxy模块可用于连接到后端服务器,如Tomcat,WebLogic,WebSphere等。

25. 如何配置Apache日志,以捕获请求的处理时间?

您可以在httpd.conf文件的LogFormat指令下添加“%D”来捕获响应请求的处理时间。它会以微秒显示时间。

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %D" combined

重新启动Apache Web服务器,您就可以看到结果了。

182.19.197.23 - - [02/Oct/2016:10:32:25 +0000] "GET / HTTP/1.1" 403 4961 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36" 1515
182.19.197.23 - - [02/Oct/2016:10:32:25 +0000] "GET /icons/apache_pb.gif HTTP/1.1" 304 - "http://lab.yaoweibin.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36" 424
182.19.197.23 - - [02/Oct/2016:10:32:25 +0000] "GET /icons/poweredby.png HTTP/1.1" 304 - "http://lab.yaoweibin.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36" 472

26. 您用于日志分析的工具是什么?

您必须讲实话,但是为了给您提供一个想法,您可以使用GoAccess或其他一些mentioned here

27. 您使用过哪些与Apache一起工作的Web服务器?

同样,您最好讲实话,但是为了让您了解,市场上有许多Web服务器,包括以下几种。

  • Nginx
  • Microsoft IIS
  • LiteSpeed
  • GWS

28. 如何验证httpd.conf文件以确保没有配置语法错误?

httpd -t命令将帮助您检查语法。

[root@lab httpd]# /usr/sbin/httpd -t
Syntax OK
[root@lab httpd]#

或者,您也可以使用apachectl命令。

[root@lab ~]# /usr/sbin/apachectl configtest
Syntax OK
[root@lab ~]#

29. 如何对Apache进行性能基准测试?

您可以使用类似ApacheBench, SIEGE的工具对包括Apache在内的Web服务器进行负载测试。另一种进行压力测试的选择是使用test online,以了解在负载下Web应用程序的整体性能如何。

30. 如果Apache Web服务器出现问题,如何获取支持?

Apache是一个开源的Web服务器,因此没有企业级支持。但是,您可以提出bug report或在Stack Overflow上提问。

31. 如何确保服务器重启后Web服务器已启动?

如果运行Linux,则可以将脚本放在/etc/init.d/中并使用chkconfig命令启用start on boot

假设您创建了一个名为apache的文件并放在/etc/init.d/下:

chkconfig --add apache
chkconfig apache on

如果是在Windows上,确保选择了“自动”启动类型。

32. Apache和Nginx Web服务器之间有什么区别?

两者都被归类为Web服务器,以下是一些主要区别。

  • Nginx是基于事件的Web服务器,而Apache是基于进程的
  • Nginx以其比Apache更好的性能而闻名
  • Apache支持各种操作系统,而Nginx不支持OpenVMS和IBMi
  • Apache具有许多与后端应用服务器集成的模块,而Nginx仍在迎头赶上
  • Nginx轻量且迅速占据市场份额。如果您是Nginx的新手,那么您可能会对阅读我关于Nginx的文章感兴趣。

33. 如果graceful-stop无法停止Apache,你会如何杀死它?

如果在Linux上运行,则可以使用kill命令。

通过使用ps -ef |grep http找到Apache的PID

然后杀死它

kill $PIDNUMBER

如果常规kill不起作用,则尝试kill -9

kill -9 $PIDNUMBER

如果在Windows上,则从任务管理器中结束Apache任务。

34. 如果您不知道安装位置,如何找到httpd.conf文件?

在Linux中,您可以使用find命令。

假设您知道它必须在/apps文件系统中,那么您可以使用以下命令。

find /apps -name httpd.conf

但是如果您不确定文件系统在哪里,可以在/文件系统上查找,但要记住,根据整个文件系统的大小,这可能需要很长时间。

find / -name httpd.conf

35. 您知道哪些不同版本的Apache Web服务器?

  • IBM HTTP Server-称为IHS,通常与IBM WebSphere Application Server一起使用
  • Oracle HTTP Server-称为OHS,通常与Oracle Weblogic服务器一起使用

36. Apache在数据中心位置在哪里?

您可以根据自己的经验进行解释,但通常针对面向互联网的应用程序,它将位于Internet DMZ网络中,而对于内部网络,它将位于核心网络中。

但是这将根据应用程序/组织的不同而有所不同。

37. 如何隐藏HTTP响应头中的服务器版本详细信息?

在httpd.conf文件中添加以下内容并重启web服务器

ServerTokens Prod
ServerSignature Off

这将隐藏版本并将服务器显示为“Apache”。

38. 200、403和503 HTTP错误代码的意思是什么?

  • 200-找到并正常提供内容
  • 403-尝试访问受限文件/文件夹
  • 503-服务器忙于处理请求,换句话说-服务不可用。
  • 更多信息,请参阅。

39. 如何禁用跟踪HTTP请求?

在httpd.conf文件中添加以下内容并重启实例

TraceEnable off

40. 如何排除端口冲突问题?

对于排除端口冲突问题,将是有用的。如果在单个服务器上运行多个实例,则建议为Listen指令配置绝对IP:端口。

41. 如何安装第三方模块?

您可以使用。下载后,使用tar实用程序进行提取。

tar  -xf   Apachetoolbox-1.5.72.tar.gz

使用cd命令导航到文件夹Apachetoolbox-1.5.72,并运行以下命令为Apache服务器选择模块。

./install.sh

它提供了诸如mod_ip_forwarding、mod_auth_mysql和mod_auth_samba之类的模块,可与Apache Web服务器一起编译。虽然您可以手动包含这些模块,但使用Apache Toolbox更加方便。

42. 如何为虚拟主机分配多个名称?

您可以使用ServerAlias指令,如下所示。

ServerName  example.com  
ServerAlias    awesome.com  fantastic.com

43. 如何限制上传大小?

我有一个网络应用程序,允许用户上传诸如Word文档、PDF等文件。如何限制用户上传文件的大小?

您可以使用LimitRequestBody指令来限制上传文件的大小。

 
LimitRequestBody 9000 

分配给LimitRequestBody的值允许Apache接受和存储用户上传的9000字节文件。您可以根据需求调整该值。

44. 如何限制IP访问?

您可能希望某些上下文根可由允许的IP访问。为此,您可以使用mod_authz_coremod_authz_host模块,使用Require指令来限制访问。

Require 10.0.0.2 10.0.0.4 192.168.34.23 192.168.34.23

通过上述操作,Apache仅会为来自列出的IP的请求提供服务。

您需要在要允许或拒绝访问资源的目录中指定Require指令。

结论

希望上述问题和答案能帮助你准备成为一个网络服务器管理员interview

类似文章