资讯专栏INFORMATION COLUMN

WebServer Q&A

MkkHou / 3227人阅读

摘要:进程的工作就是管理子进程,而子进程的工作就是处理用户请求。当新的请求过来的时候,管理线程会把请求交给其他的空闲线程处理。

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

Apache

Nginx

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文件并修改,代码如下:

//配置虚拟主机(站点)
  
    ServerName domain.com
    ServerAlias www.domain.com mail.domain.com
    DocumentRoot "/home/www"  
    
    #设置文件夹访问控制,其路径要和上一行的DocumentRoot一样,
      
        ## 禁止显示目录结构
        Options FollowSymlinks
        ## 允许.htaccess生效 
        AllowOverride All  
        ## 请求控制
        Require all granted
        ## 默认打开的页面设置
        DirectoryIndex index.php index.html  
       
 

上面配置请求控制到底是什么?

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39599.html

相关文章

  • WebServer Q&A

    摘要:进程的工作就是管理子进程,而子进程的工作就是处理用户请求。当新的请求过来的时候,管理线程会把请求交给其他的空闲线程处理。 当前主流的web服务器有哪些? Apache Nginx iis Apache的工作模式有哪些?各自的特点和优缺点是什么?适用场景是什么? apache主要工作模式有3种,分别如下: prefork工作模式 特点 prefork模式是一种非线程的多进程模型,we...

    RyanHoo 评论0 收藏0
  • Yaf框架 Q&A

    摘要:如何开启多模块在配置文件中,配置如下代码开启重写规则项目中创建模块在目录中创建目录然后再在目录下创建模块目录 Yaf 如何开启多模块? 在配置文件(application.ini)中,配置如下代码: application.modules=Index,Admin 开启webServer重写规则 if (!-e $request_filename) { rewrite ^/(.*...

    shixinzhang 评论0 收藏0
  • Docker常用命令

    摘要:如将自定义的镜像发布到仓库。如上传后访问地址自定义的上传上去的镜像。 Docker检查 查看版本 $docker --version #查看版本 $docker-compose --version #查看版本 $docker-machine --version #查看版本 $docker version #查看client和server端版本,并可以查看是否开启体验功能 检查 $do...

    rickchen 评论0 收藏0
  • docker 命令

    摘要:对常用的一些命令做一个记录镜像相关拉去一个镜像文件选项地址端口号仓库名标签查看镜像列表是只列出镜像列表过滤虚悬镜像在指定的镜像之后创建的镜像在指定的镜像之前创建的镜像根据镜像名称和标签过滤删除虚悬镜像删除镜像选项镜像镜像命令组合删 对docker 常用的一些命令做一个记录 镜像 image 相关 ## 拉去一个镜像文件 docker pull [选项] [Docker Registry...

    charles_paul 评论0 收藏0
  • Docker操作常用命令-镜像篇

    摘要:获取镜像选项地址端口号仓库名标签例具体选项可通过命名看到默认为,地址格式为域名例运行容器仓库名以上面的为例,如果我们打算启动里面的并进行交互式操作这是两个参数,一个是交互式操作,一个是终端。 获取镜像 docker pull [选项] [Docker Registry 地址[:端口号]/] 仓库名[:标签] 例:docker pull ubuntu:16.04 具体选项可通过 dock...

    joyqi 评论0 收藏0

发表评论

0条评论

MkkHou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<