>  기사  >  백엔드 개발  >  아파치에 관한 초중급 인터뷰 질문 25개

아파치에 관한 초중급 인터뷰 질문 25개

伊谢尔伦
伊谢尔伦원래의
2016-11-25 15:27:23881검색

Apache 취업 면접 질문

이 섹션에서는 25개의 흥미로운 Apache 취업 면접 질문과 그에 대한 답변을 다루므로 이전에 물어본 적이 없을 수도 있다는 것을 쉽게 이해할 수 있습니다. Apache에 대해 제가 본 몇 가지 새로운 사실.

이 글을 읽기 전에 암기하지 말고 먼저 실제 상황에서 모든 것을 이해해 보시기를 권합니다.

1. Apache 웹 서버란 무엇인가요?

답변: Apache 웹 서버 HTTP는 웹 사이트를 관리하고 네트워크에 웹 파일 서비스를 제공하는 데 사용되는 매우 인기 있고 강력한 오픈 소스입니다. HTTP 하이퍼텍스트 전송 프로토콜에서 실행됩니다. 클라이언트 웹 브라우저 통신은 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" 사용자로 실행되며 Apache의 기본 구성 파일은 /etc /httpd/conf/httpd.conf(CentOS/RHEL/Fedora) 및 /etc에 있습니다. /apache2.conf(Ubuntu/Debian).

4. Apache는 http 및 https 요청을 수신합니까?

답변: 기본적으로 Apache는 http의 경우 포트 80, https의 경우 포트 443에서 수신합니다. (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 서버를 설치하시겠습니까?

답변 : 매우 간단합니다. yum(RHEL/CentOS/Fedora) 및 apt-get(Debian/Ubuntu) 등을 사용하여 Linux Apache 서버에 설치할 수 있습니다.

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

6. Apache 웹 서버의 모든 구성 경로를 찾을 수 있습니까?

답변: 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에서 기본 포트를 변경하는 방법과 그 안에 있는 지침을 듣는 방법은 무엇입니까?

답변: "Listen" 지시문이 있습니다. 기본 Apache 포트를 변경할 수 있는 httpd.conf 파일에서 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

또는

Listen 172.16.16.1:8080

파일을 저장하고 웹 서버를 다시 시작하세요.

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

9. 한 컴퓨터에 두 개의 Apache 웹 서버를 설치할 수 있나요?

답변: 예, 하나의 Linux 시스템에서 두 개의 서로 다른 Apache 서버를 동시에 실행할 수 있지만 조건은 서로 다른 포트에서 Listen에 있어야 하며 Apache의 Listen 명령을 사용하여 포트를 변경할 수 있다는 것입니다.

10. Apache의 DocumentRoot가 무엇을 의미하는지 아십니까?

답변: DocumentRoot의 Apache는 서버의 웹 파일 저장 위치가 /var/www/html 또는 /var/임을 의미합니다. www. 호스트의 가상 호스트 구성 "DocumentRoot"를 수정하여 수정할 수 있습니다.

11. 다른 폴더에 있는 파일을 관리하는 방법과 Alias ​​명령은 무엇인가요?

답변: 예, 이는 기본 Apache 구성 파일에 있는 Alias ​​명령을 사용하여 수행할 수 있습니다. Alias ​​명령은 파일 시스템의 리소스를 이미지로 검색할 수 있으며, 이는 URL 경로를 가져와서

Apache의 mod_alias 모듈의 일부인 Alias ​​지시어를 사용합니다. Alias ​​지시어 기본 구문은 다음과 같습니다.

Alias ​​​​/ 이미지 /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으로 문의하세요.