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服务器是否正在运行?
有多种方法可以找到这个。
- 登录到Web服务器并grep“httpd”进程
ps -ef |grep httpd
- 检查你的monitoring dashboard中是否有任何警报。
- 检查你的Apache IP:端口是否在浏览器中可访问
例如:http://yourapacheserver.com
- 使用netstat检查服务器上配置的IP和端口是否正在监听
netstat -anlp |grep 80
6. 如何安装Apache HTTP?
有三种可能的安装方法。
使用源代码 – 你可以下载源代码并进行编译。
- 从http://httpd.apache.org/download.cgi下载最新版本
- 使用tar命令或gzip命令解压缩源文件,具体取决于文件类型:.tar或.tar.gz
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_core或mod_authz_host模块,使用Require
指令来限制访问。
Require 10.0.0.2 10.0.0.4 192.168.34.23 192.168.34.23
通过上述操作,Apache仅会为来自列出的IP的请求提供服务。
您需要在要允许或拒绝访问资源的目录中指定Require
指令。
结论
希望上述问题和答案能帮助你准备成为一个网络服务器管理员interview。