Linux操作篇之LNMP(二)

一、apache与nginx工作模式区别。

  在apache中,默认的工作模式为同步阻塞;而nginx的默认工作模式为异步非阻塞。其中同步与异步;阻塞与非阻塞组成了四种工作模式。

举例:1、同步阻塞模式:小明收到了快递快要到达的信息,去快递收货点等快递(等待期间什么也不做,只是等快递一件事)。

   2、同步非阻塞模式:小明收到了快递快要到达的信息,去快递收货点等快递。(等待期间在玩游戏或者在上网)。

   3、异步阻塞模式:小明收到了快递快要到达的信息,在家等着快递员给小明发消息(等待期间什么也不做,只是等快递员消息一件事)。

   4、异步非阻塞模式:小明收到了快递快要到达的信息,在家等着快递员给小明发消息(等待期间在玩游戏或者在上网)。

上面可以看出,apache(同步阻塞模式)的工作效率最低,并不适合高并发的访问量,而nginx(异步非阻塞模式)则可以轻松处理百万并发量的连接。

 

二、epoll模型(多路复用模型)

  nginx配置use epoll 后,以异步非阻塞模式工作,而epoll模型可以理解为楼下的传达室。快递送到传达室中,并通知来取快递,其他人的快递也在传达室中,谁有空谁来取,都通知了但没人来取的时候,保安老大爷就休息了。小明有空来取了,保安老大爷就根据快递信息单给小明拿快递

 

三、nginx工作原理。

 

 

 

 nginx工作模式有两种,一个是master-work模式和单进程模式,大多数使用的master-work模式,少数测试开发阶段使用单进程模式。

在master-work模式下,会启动一个守护进程(master)和至少一个子进程(work)。

master主要是加载系统配置,处理系统信号,管理work进程(启动、结束、监控等)。

work进程主要处理具体的业务逻辑,对外部来说,是真正处理请求的服务

优点:高稳定性,只要还有work进程在运行,就可以对外提供服务。当一个work进程中断时,master进程会及时启动一个新的work进程。

   高性能,可以充分利用CPU的多核这一特性。

   高可用,在进行配置更改、升级的时候,可以做到不中断服务的热重启。

三、解读配置文件

1、主配置文件(/usr/local/nginx/conf)
user  nginx nginx;      程序运行的用户、用户组


worker_processes  1;          启动工作进程的数量,一般按照CPU核心数设置。


#error_log  logs/error.log;   错误日志存放位置,后面的是记录类型
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;      主进程PID文件存放位置


events {
                                  使用的工作模型,(默认情况下为epoll模型)
    worker_connections  1024;  工作进程的最大连接数量(最大可处理并发量=最大连接数量X进程数量)
}


http {                              优化网站参数
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;    访问日志记录位置及类型

    sendfile        on;            启动高效文件传输模式
    #tcp_nopush     on;        避免网络阻塞,与tcp_nodelay两者选一,后者为有数据时,尽快传输,提高传输效率。

    #keepalive_timeout  0;
    keepalive_timeout  65;      每个TCP连接最多保持多长时间,时间过长会影响性能,设置为0,表示不保持TCP连接。

    #gzip  on;                    启用文件压缩,可提高网站传输速度,减少响应时间。

    server {                     一个server代表一个网站的配置信息,当有多个server的时候,就可以对比apache中的虚拟主机,一个server对应一个虚拟主机
        listen       80;         监听端口    
        server_name  localhost;  服务器域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;        网站的根目录(此配置中,实际的地址为/usr/local/nginx/html)
            index  index.html index.htm index.php;    默认加载的首页(有先后顺序,排在前面的优先,没有找到前一个再寻找下一个)
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    server{
    虚拟主机
    }
}

 

posted on 2021-10-16 23:23  沫仔  阅读(46)  评论(0编辑  收藏  举报

导航