0
点赞
收藏
分享

微信扫一扫

Linux操作篇之LNMP(二)

Sikj_6590 2022-06-23 阅读 28

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

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

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

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

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

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

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

 

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

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

 

三、nginx工作原理。

Linux操作篇之LNMP(二)_html

 

 Linux操作篇之LNMP(二)_nginx_02

 

 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{
虚拟主机
}
}
举报

相关推荐

0 条评论