首頁  >  文章  >  後端開發  >  關於 apache 的 25 個國中級面試題

關於 apache 的 25 個國中級面試題

伊谢尔伦
伊谢尔伦原創
2016-11-25 15:27:23926瀏覽

Apache 求職面試提問

在這一節涵蓋了25個有趣的Apache工作面試中會提出的問題,並附帶它們的答案,因此你可以方便的理解也許你之前從來沒有見過的一些有關於Apache的新事物.

在你開始閱讀這篇文章之前,我們強烈建議你不要去死記硬背,萬事首先都要嘗試去放在實際場景中理解.

1. 什麼是Apache web伺服器?

答案: Apache web 伺服器HTTP 是一個非常流行、功能強大且開源,用於管理web站點並向網絡提供web文件服務. 它基於HTTP 超文本傳輸協議運行, 這一協議提供了服務器和客戶端web瀏覽器通訊的標準. 它支援 SSL, CGI 檔案, 虛擬主機還有許多其它的功能特性.

2. 如何檢查Apache 及其版本?

答案: 首先,使用rpm命令來檢查Apache是​​否已經安裝.如果已經安裝好了,那就使用httpd -v 命令來檢查它的版本.

[root@tecmint ~]# 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@tecmint ~]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Aug 13 2013 17:27:11

3. Apache 以那個用戶運行? 主配置文件的位置在哪裡?.

答案: Apache 以“nobody”用戶和httpd守護程式運行. Apache 主要的設定檔在: /etc/httpd/conf/httpd.conf (CentOS/RHEL/Fedora) 還有/etc/apache2.conf (Ubuntu/Debian).

4. Apache 偵聽http 和https 請求?

答案:  Apache 預設在80埠偵聽http,在443埠偵聽https(需要SSL整數). 你也可以使用 netstat 指令 來檢查埠.

[root@tecmint ~]# netstat -antp | grep http
tcp 0 0 :::80 :::* LISTEN 1076/httpd
tcp 0 0 :::443 :::* LISTEN 1076/httpd

5. 如何在你的Linux機器上安裝Apache伺服器?

答案: 很簡單, 你可以使用任何諸如(RHEL/CentOS/Fedora)上的yum以及(Debian/Ubuntu)上的apt-get來在你的Linux上安裝Apache伺服器.

[root@tecmint ~]# yum install httpd
[root@tecmint ~]# apt-get install apache2

6. 你可以在哪裡找到Apache Web伺服器的所有設定路徑?

答案: Apache預設的設定路徑放在: (RHEL/CentOS/Fedora) 中是在 /etc/httpd/ on 而 (Debian/Ubuntu ) 是在/etc/apache2下 .

[root@tecmint ~]# cd /etc/httpd/
[root@tecmint 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@tecmint ~]# cd /etc/apache2
[root@tecmint 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封裝器固定嗎?

答案: 不可以,它不可以被TCP封裝器固定下來,因為它不支援Linux的libwrap.a庫.

8. 如何在Apache中改變預設的端口,以及如何偵聽其中的指令工作?

答案: 在httpd.conf檔案中有一個指令「Listen」可以讓我們改變預設的Apache端口. 在Listen指令的幫助下我們可以在不同的連接埠還有不同的介面進行Apache偵聽.

假設你擁有多個IP註冊到了你的Linux機器,並且想要Apache在一個特殊的乙太網路連接埠或介面接收HTTP請求, 即使是這種要求也可以用Listen指令做到.

為了改變Apache的默認端口,請使用打開你的Apache主配置文件 httpd.conf 或者 apache2.conf .

[root@tecmint ~]# vi /etc/httpd/conf/httpd.conf
[root@tecmint ~]# vi /etc/apache2/apache2.conf

查找”Listen”這個詞, 註解原來的那一行並且在那一行下面寫上你自己的指令.

# Listen 80
Listen 8080

OR

Listen 172.16.16.1:8080

保存檔案並重啟web伺服器.

[root@tecmint ~]# service httpd restart
[root@tecmint ~]# service apache2 restart

9. 我們可以一台機器上放兩個Apache Web伺服器麼?

答案: 可以,我們在一台Linux機器上同時運行兩個不同的Apache伺服器, 但條件是它們應該在不同的連接埠上偵聽,而我們可以使用Apache的Listen指令來改變連接埠.

10. 你知道Apache的DocumentRoot是啥意思麼?

答案: DocumentRoot 的Apache 意思是伺服器上web檔案的儲存位置, 預設的DocumentRoot是 /var/www/html 或/var/www. 這是可以被修改的,只要修改主機中的虛擬主機配置 “DocumentRoot”就行了.

11. 如何在不同的文件夾下面管理文件,還有什麼是 Alias 指令?

答案: 是的,這可以藉助於主Apache設定檔中的Alias指令做到. Alias 指令可以對檔案系統中的資源按圖索驥, 它使用一個URL 路徑,並且使用重定向到系統上的一個檔案或目錄來替換它.

使用Alias指令,它是Apache的 mod_alias 模組的一部分. Alias指令的預設語法是:

Alias /images /var/data/images/

上面的示例中, 放在/var/data/images 前缀前面的 /images url的意思是客户端请求“http://www.example.com/images/sample-image.png” 会让Apache从服务器上的/var/data/images/sample-image.png 取 “sample-image.png” 文件. 它也被称为URL 映射.

12. 对于“DirectoryIndex”你是怎么理解的?

答案 : DirectoryIndex 是当有一个来自主机的请求时Apache首先会去查找的文件. 例如: 客户端发送请求www.example.com, Apache 对此将到站点的文件根目录查找index文件 (首先要展示的文件).

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. 当index文件丢失时如何使目录列表失效?

答案 : 如果站点根目录中的主index文件失效, 那么Apache将会在浏览器上列出所有内容类似的文件,以替换站点主页.

为了关闭Apache目录列表, 你可以在主配置文件中全局的设置,或者在.htaccess文件中部分的设置如下规则.

<Directory /var/www/html>
Options -Indexes
</Directory>

14. Apache Web 服务器有些什么不同的日志文件?

答案 : Apache Web 服务器的默认日志文件是访问日志 “/var/log/httpd/access_log” 和错误日志:/var/log/httpd/error_log”.

15. 你是怎样理解错误日志中的“connection reset by peer”的?

答案 : 当服务器正在向请求提供服务时终端用户中断连接, 我们就会在错误日志中看到“connection reset by peer“.

16. 什么是Apache的虚拟主机?

答案 : 虚拟主机部分包含的信息包括站点名称,文档根路径,目录索引,服务器管理员邮箱,错误日志文件路径等等。

你可以随意为你的域添加你需要的指令,但是要运行一个站点,至少要配置量个参数服务器名称和文档根目录。 在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 : web文件在服务器上存放位置(必须配置).

ServerName : 通过浏览器访问站点时的域名(必须配置).

ErrorLog : 日志文件的位置,里面记录了所有与该站点相关的日志。

17. a625b56ea89673a6f0f85653dfc11837和7b799fe73e35dcfdc019b13f54de80e5之间有什么区别?

答案 :

a625b56ea89673a6f0f85653dfc11837 是用来设定和URL/ web服务器的地址栏相关的元素的。

7b799fe73e35dcfdc019b13f54de80e5 是指服务器上某对象在文件系统中的位置

18. 什么是Apache虚拟托管?

答案 : Apache虚拟托管是指,在单个web服务器上托管多个web站点。Apache 可以设定两种类型的虚拟主机:基于名称的虚拟托管和基于IP的虚拟主机托管。

更多相关信息,请参阅 如何在Apache中创建基于Name/IP的虚拟主机。

19. 你怎么理解Apache的MPM?

答案 : MPM意思是Multi Processing Modules,实际上是指Apache遵循的一些机制,用来接受和完成对web服务器的请求。

20.  Worker 和 Prefork MPM之间的区别是什么?

答案 : 它们都是MPM, Worker 和 prefork 有它们各自在Apache上的运行机制. 它们完全依赖于你想要以哪一种模式启动你的Apache.

Worker 和 MPM基本的区别在于它们产生子进程的处理过程. 在Prefork MPM中, 一个主httpd进行被启动,这个主进程会管理所有其它子进程为客户端请求提供服务. 而在worker MPM中一个httpd进程被激活,则会使用不同的线程来为客户端请求提供服务.

Prefork MPM 使用多个子进程,每一个进程带有一个线程而 worker MPM 使用多个子进程,每一个进程带有多个线程.

Prefork MPM中的连接处理, 每一个进程一次处理一个连接而在Worker mpm中每一个线程一次处理一个连接.

内存占用 Prefork MPM 占用庞大的内存, 而Worker占用更小的内存.

21. “LimitRequestBody”的应用是什么,还有如何在你的上传中加入限制?

答案 : LimitRequestBody 指令被用来在上传大小上做一个限制.

例如: 我想要在 /var/www/html/tecmin/uploads目录中加入 100000 字节的限制. 那么你就需要在Apache配置文件中加入下面的指令.

<Directory "/var/www/html/tecmint/uploads">
    LimitRequestBody 100000
</Directory>

22. mod_perl 和 mod _php 是什么?

答案:

mod_perl 是一个随同Apache一起编译的Apache模块,用来做Perl脚本的简单集成并提升其性能.

mod_php 用来做web服务器PHP脚本的简单集成, 它在Apache进程中嵌入了PHP解释器. 它强制Apache子进程使用更多的内存,并且只能在Apache上使用,但是仍然很流行.

23. Mod_evasive是什么?

答案: 它是一个保护你的web服务器不受像DDOS之类的web攻击的第三方模块,因为它一次只执行一个任务,所有执行得很不错.

更多信息,请阅读这篇文章, 它会指导你 如何在Apache中安装并配置mod_evasive.

24. httpd.conf文件中的Loglevel调试是什么?

答案 : 在Loglevel Debug 选项的帮助下, 我们可以在错误日志中获取或者记录更多的信息,以帮助我们调试问题.

25. mod_ssl 有什么用以及SSL在Apache中如何工作?

回答: Mod_ssl 是一个Apache模块, 它使Apache可以在一个安全的加密环境中建立连接和传输数据。 使用SSL证书,所有的登录信息和其他重要的保密信息都会以加密的方式在Internet上进行传输,这会防止我们的数据被窃取或IP欺骗。

怎样在Apache中使用SSL

每当https请求到达,Apache都会执行以下三步:

Apache生成它的私钥并且将私钥转换为.CSR 文件 (证书签发请求).

然后Apache发送 .csr 文件给 CA (证书管理中心).

CA 收到.csr 文件 并转换为 .crt (证书) 然后再发回给Apache 来完成https连接请求.

这就是目前被面试官问到的最流行的25的问题, 请在下面评论部分分享你最近面试被问到的面试问题来帮助其他其他面试者。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn