当前主流的web服务器有哪些?

  1. Apache
  2. Nginx
  3. iis

Apache的工作模式有哪些?各自的特点和优缺点是什么?适用场景是什么?

apache主要工作模式有3种,分别如下:

prefork工作模式

  • 特点
prefork模式是一种非线程的多进程模型,web服务(apache)启动就是启动master进程,随之
master进程会启动若干个worker子进程,一个进程对应一个线程。
master进程的工作就是管理worker子进程,而worker子进程的工作就是处理用户请求。
当用户发起一个请求,apache就会从空闲的子进程中选择一个来处理这个用户请求。

一个进程处理一个请求,处理完才处理下个请求
  • 优点
1、用户不用等到其他进程处理完毕.因为只要有空闲子进程在就可以处理新的请求
2、每个请求相互独立,如果一个worker子进程崩溃了,不会影响其他worker进程处理请求。
3、此模式是线程安全的,所谓线程安全:多个线程无法同时操作一个对象
4、响应速度快,稳定
  • 缺点
1、消耗CPU和内存资源大
2、并发量不高

worker工作模式

  • 特点
是一种多进程多线程模型,仍然是一个master父进程启动若干个子进程,每个子进程启动若干个线程,每个线程处理每个请求
  • 优点
1、worker模型的并发性高于prefork模型,适合高并发场景
2、消耗资源少
  • 缺点
1、非线程安全,所以此模式只能使用线程安全版本的PHP
2、一旦某线程出了问题,可能导致整个进程死掉

event工作模式 (apache2.4新增的)

  • 特点
是worker模式的升级版,为了解决长连接(keep-alive)问题而生的
使用worker模型,一个线程对应一个请求,当一个请求为长连接的时候,
线程就会保持当长连接状态,等待客户端的下一个请求,
这样子当前线程就不能处理其他客户端请求了
  • 优点
event模型下,每个进程会有一个单独的线程来管理这些keep-alive类型的线程。
当新的请求过来的时候,管理线程会把请求交给其他的空闲线程处理。
这样子就避免了每个线程都被keep-alive阻塞
  • 缺点
不支持https,在https协议下会退化成worker模型

Apache工作模式在哪里指定?如何查看当前apache处于哪种模式

  • 在编译安装Apache的时候指定的 --with-mpm=profork
  • 使用命令:./apachectl -l

Apache工作模式的配置文件在哪?各配置选项是什么?

  • 配置文件默认是:httpd-mpm.conf

Apache2.4.X 多站点如何配置?

  • 修改主配置文件

在httpd.conf中,打开多站点配置模块
Include conf/extra/httpd-vhosts.conf 把前面#号去掉

  • 打开extra/httpd-vhost.conf文件并修改,代码如下:
//配置虚拟主机(站点)
<VirtualHost *:80>  
    ServerName domain.com
    ServerAlias www.domain.com mail.domain.com
    DocumentRoot "/home/www"  
    
    #设置文件夹访问控制,其路径要和上一行的DocumentRoot一样,
    <Directory "/home/www">  
        ## 禁止显示目录结构
        Options FollowSymlinks
        ## 允许.htaccess生效 
        AllowOverride All  
        ## 请求控制
        Require all granted
        ## 默认打开的页面设置
        DirectoryIndex index.php index.html  
    </Directory>   
</VirtualHost> 
  • 上面配置请求控制到底是什么?

Require all granted 代表所有人都可以访问
Require all denied 代表所有人都不可以访问
Require not ip 192.168.1.24 禁止指定ip访问
真正要禁止ip,请使用iptables


104828720
1.4k 声望222 粉丝

编程其实很枯燥,所以一定要有追求。


« 上一篇
PHP Q&A
下一篇 »
vuejs Q&A