44个实用的Apache Web Server面试问题及答案

Apache是??最受欢迎的Web服务器, 如果你打算以中间件/系统/ Web管理员的身份工作, 则必须熟悉它。 Apache HTTP是Windows和UNIX的开源Web服务器。
几天前, 我写了有关WebSphere Interview Questions的文章, 许多人都要求写有关Apache Web Server的文章, 所以请继续。
在从初学者到专家级别的访谈中, 通常会询问以下问题。大多数组织将由中间件/系统管理员管理Web服务器以及Application Server和其他组件。
让我们开始实时面试问题与解答…
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

另一个过程是使用服务
httpd stop service httpd start

2. HTTP和HTTPS的默认端口是什么?
HTTP的默认端口是80和HTTPS443。签出此处列出的其他应用程序的默认端口。
3.你能告诉我重要的配置文件名称吗?
httpd.conf是Apache中使用的主要配置文件。
4.如何检查正在运行的Apache Web Server的版本?
有多种找到此方法的方法, 但更准确地说是:
  • 登录到Web服务器
  • 转到apache实例和bin文件夹
  • 用-v执行httpd以获取版本详细信息。
[[email  protected] sbin]# ./httpd -v Server version: Apache/2.2.15 (Unix) Server built:    Jul 18 2016 15:24:00 [[email  protected] sbin]#

或者, 你也可以使用rpm命令检查安装的版本。
[[email  protected] ~]# rpm -qa |grep httpd httpd-2.2.15-54.el6.centos.x86_64 httpd-tools-2.2.15-54.el6.centos.x86_64 [[email  protected] ~]#

5.如何知道Web服务器是否正在运行?
有多种找到方法。
  1. 登录到Web服务器并使用grep执行” httpd” 进程
ps -ef |grep httpd

  1. 在监视仪表盘中检查任何警报。
  2. 检查浏览器中是否可以访问你的apache IP:port
例如:http://yourapacheserver.com
  1. 使用netstat检查配置的IP和端口是否正在服务器上侦听
netstat -anlp |grep 80

6.如何安装Apache HTTP?
有三种可能的方法来安装此程序。
使用源代码–你可以下载源代码并进行编译。
  • 从http://httpd.apache.org/download.cgi下载最新版本
  • 使用tar实用程序或gzip实用程序提取源, 具体取决于文件类型:.tar或.tar.gz
tar xvfhttpd-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

【44个实用的Apache Web Server面试问题及答案】RPM –你可以下载必要的RPM软件包并使用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” 。
例如:
< Directory />             Options -Indexes < /Directory>

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 Server上托管的网站?
有多种保护Apache Web服务器安全的方法, 包括以下几种。
  • 实现SSL
  • 与ModSecurity等WAF(Web应用程序防火墙)集成。
  • 使用基于云的安全提供程序
13. Apache生成哪些日志文件?
创建了两个流行的日志文件。
  • access.log –所有请求详细信息以及状态码
  • error.log –捕获apache或连接到后端中的所有错误
14.如何创建CSR?
你可以使用以下OpenSSL命令或在线生成CSR。
使用私钥创建新的CSR
openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key

请查看OpenSSL备忘单以获取更多命令。
15.什么是虚拟主机?
Apache中的虚拟主机允许你在单个实例上托管多个网站。你可以创建基于IP或基于虚拟主机的名称。
16.连接到WebSphere需要什么模块?
必须在httpd.conf文件中添加mod_was_ap22_http.so才能与IBM WAS集成。
17.如何将日志级别置于调试模式?
当你对问题进行故障排除并希望捕获更多详细信息时, 通常需要使用它。你可以通过确保httpd.conf文件中的以下内容来更改日志记录级别以进行调试。
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。
Default DocumentRoot location is /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或JSP-Servlet容器的Tomcat。
24. Apache如何充当代理服务器?
你可以使用mod_proxy模块用作代理服务器。 mod_proxy模块可用于连接到后端服务器, 例如Tomcat, WebLogic, WebSphere等。
25.如何配置Apache日志, 以便捕获服务请求所花费的时间?
你可以在LogFormat指令下的httpd.conf文件中添加” %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.geekflare.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.geekflare.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, SumoLogic或此处提到的一些方法。
27.你与Apache一起使用过哪些Web服务器?
同样, 你最好说实话, 但要知道, 市场上有很多Web服务器, 包括以下内容。
  • Nginx
  • Microsoft IIS
  • LiteSpeed
  • GWS
28.如何验证httpd.conf文件以确保没有配置语法错误?
httpd –t将帮助你检查语法。
[[email  protected] httpd]# /usr/sbin/httpd -t Syntax OK [[email  protected] httpd]#

另外, 你也可以使用apachectl命令。
[[email  protected] ~]# /usr/sbin/apachectl configtest Syntax OK [[email  protected] ~]#

29.如何执行Apache性能基准测试?
你可以使用ApacheBench, SIEGE之类的工具在包括Apache在内的Web服务器上执行负载测试。在线执行压力测试的另一种选择, 以查看Web应用程序在负载下的总体性能。
30.如果出现问题, 如何获得对Apache Web Server的支持?
Apache是??一个开放源代码Web服务器, 因此没有企业级支持。但是, 你可以提出错误报告或对堆栈溢出提出问题。
31.如何确保服务器重启后Web服务器能够启动?
如果运行Linux, 则可以将脚本放在/etc/init.d/中, 并使用chkconfig命令启用启动功能
假设你创建了一个名为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.如果无法正常运行, 你将如何杀死Apache?
如果在Linux上运行, 则可以使用kill命令。
使用ps -ef | grep http找出Apache的PID
然后杀死它
kill $PIDNUMBER

如果正常杀死无效, 请尝试杀死-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的应用程序, 它应该位于Internet DMZ网络中以及Intranet, 核心网络中。
但这又会因应用程序/组织而异。
37.如何在HTTP响应标头中隐藏服务器版本详细信息?
在httpd.conf文件中添加以下内容, 然后重新启动Web服务器
ServerTokens Prod ServerSignature Off

这将隐藏版本并将服务器显示为” 仅Apache” 。
38. 200、403和503 HTTP错误代码是什么意思?
  • 200 –找到内容并投放
  • 403 –尝试访问受限制的文件/文件夹
  • 503-服务器太忙, 无法处理请求, 换句话说, 服务不可用。
  • 有关更多信息, 请参见HTTP响应代码信息图。
39.如何禁用跟踪HTTP请求?
在httpd.conf文件中添加以下内容, 然后重新启动实例
TraceEnable off

40.如何解决端口冲突问题?
netstat对解决端口冲突问题很有用。如果在单个服务器上运行多个实例, 则建议为监听指令配置绝对IP:Port。
41.如何安装第三方模块?
你可以使用Apache Toolbox。下载后, 使用tar实用程序将其解压缩。
tar-xfApachetoolbox-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指令, 如下所示。
ServerNameexample.com ServerAliasawesome.comfantastic.com

43.如何限制上传大小?
我有一个Web应用程序, 允许用户上传文件, 如Word文档, pdf等。如何限制用户上传文件?
你可以使用LimitRequestBody指令来限制上传文件的大小。
< Directory "usr/local/apache2/uploads"> LimitRequestBody 9000 < /Directory>

分配给LimitRequestBody的值允许Apache接受并存储用户上传的9000字节的文件。你可以根据需要调整值。
44.如何限制IP访问?
你可能希望某些上下文根可由允许的IP访问。为此, 你可以使用Require指令使用mod_authz_core或mod_authz_host模块来限制访问。
Require 10.0.0.2 10.0.0.4 192.168.34.23 192.168.34.23

通过上述操作, 仅当请求来自列出的IP时, Apache才会处理请求。
你需要在要允许或拒绝访问资源的目录中指定Require指令。
总结希望以上问题和答案能帮助你准备Web服务器管理员面试。

    推荐阅读