Nginx教程

【学习打卡】第1天 Nginx学习

本文主要是介绍【学习打卡】第1天 Nginx学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:Java架构师-技术专家

课程章节: 第6周 集群架构:LVS+Nginx高可用集群

主讲老师:慕课讲师团:Geely、风间影月、阿神……

课程内容:

今天的学习内容包括:

1. 什么是Nginx

  • Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供 IMAP/POP3/SMTP服务。
  • 主要的功能是反向代理,通过反向代理可以实现集群和负载均衡以及URL的路由(通过配置文件实现)。
  • 静态资源虚拟化,可以将本地的静态文件虚拟化成一个服务。

2、什么是反向代理

2.1、什么是正向代理

  • 客户端请求目标服务器之间的一个代理服务器
  • 请求会先经过代理服务器,然后再转发请求到目标服务器,获得内容后最后响应给客户端。电信、移动运营商、VPN就是正向代理服务器。

正向代理服务器

2.2、什么是反向代理

  • 用户请求目标服务器,由代理服务器决定访问那个ip,代理服务器屏蔽了目标服务器。
  • 通过反向代理可以实现路由,通过url转发到不同的服务器

反向代理之路由

3、Nginx解析过程

nginx通过配置监听端口,映射路由到指定服务。
nginx解析过程

server {
	listen 80;  # 监听的端口号
	server_name  localhost; # 服务名
	localtion / { # 映射
		root html;
		index index.html;
	}
	error_page 500 502 503 504 /50x.html;
	location = /50x.html {
		root html;
	}
}

4、Nginx常用命令

由于Nginx安装我已经很娴熟,所以不在此赘述,在此记录一下Nginx常用命令。这些命令由 master 进程接受。

# 切换到nginx安装目录
# 启动 nginx
./sbin/nginx
# 停止nginx
./sbin/nginx -s stop
# 完成当前工作后停止
./sbin/nginx -s quit
# 在不停止nginx的情况下,重启nginx,重新加载配置文件,启动新的工作进程,完美停止旧的工作进程
./sbin/nginx -s reload
# 检测nginx配置文件是否可用
# nginx -t -c ./nginx.conf

5、Nginx进程模型

  • master进程:主进程
  • worker进程:工作进程,是为master进行服务的。
    通过 ps-ef | grep nginx命令查看 nginx 进程
[root@iZ2zeausm2jefqqtmpikzqZ ~]# ps -ef | grep nginx
root      4608  4222  0 Jul21 ?        00:00:00 runsv nginx
root      4621  4608  0 Jul21 ?        00:00:00 svlogd -tt /var/log/gitlab/nginx
root      4623  4608  0 Jul21 ?        00:00:00 nginx: master process /opt/gitlab/embedded/sbin/nginx -p /var/opt/gitlab/nginx
polkitd   4667  4623  0 Jul21 ?        00:00:00 nginx: worker process
polkitd   4668  4623  0 Jul21 ?        00:00:00 nginx: worker process
polkitd   4669  4623  0 Jul21 ?        00:00:00 nginx: worker process
polkitd   4670  4623  0 Jul21 ?        00:01:11 nginx: worker process

nginx 在启动之后会产生一个master进程,默认一个worker进程。在./conf/nginx.conf配置文件中可以配置worker进程数。

worker_processes 2;

master会专门接受一些来自外界的指令,然后把这些指令传递给 worker执行,如果worker发生了异常退出了,那么 master 会启动一些新的worker 去做事。
Nginx多进程保证了多个worker之间是相互独立,一个worker退出不影响其它的worker。
Nginx进程模型
假设Nginx启动以后,创建了3个Worker,当客户端有请求进入到Nginx的时候,每一个worker都要去争抢锁(该锁和客户端一一对应),抢到锁之后 client 和 worker1 会建立响应的关系,才能去处理来自客户端的请求。
Worker抢占机制
传统服务器采用同步阻塞的方式处理请求,必须等一个请求处理完毕之后才回去处理下一个请求。
传统服务器事件处理
Nginx采用异步非阻塞的方式处理请求。Nginx可以设置默认连接数,默认是1024。

events {
	# 默认使用epoll
	use epoll;
	# 每个worker允许连接的客户端最大连接数
	worker_connections 10240;
}

总结 Nginx高性能的原因是采用了抢占机制和异步非阻塞的通信模式(多路复用器,在Netty里面会涉及到)。master是作为监听,当worker获得了client请求的时候,并且处理到了阻塞的部分,worker就不会继续等待该阻塞的请求,而是会处理一些其它的客户端的请求。

6、nginx.conf详解

main    全局配置
├── worker_processes  工作进程数
├── event  配置工作模式以及连接数,是一个指令块。	
├── http   http模块相关配置
│   └──  server   虚拟主机,是一个服务器。可以配置多个
│       	├── localtion   路由规则,表达式
│			├── listen  该虚拟主机监听端口
│       	└── upstream    集群,内网服务器,负载均衡的规则

课程收获:

通过今天的学习了解了

  1. nginx是什么(高性能的反向代理服务器)
  2. 能干什么(能够实现集群、负载均衡、URL路由)
  3. 什么是正向代理、什么是反向代理?(代理服务器会帮助我们去请求外部的资源,用于代理客户端的就是正向代理。服务端的代理就是反向代理,让客户端无感知)
  4. Nginx的进程模型(Nginx工作时分为master进程和worker进程,worker进程处理请求,为master工作,master指导worker进程工作)
  5. Nginx的配置文件
    学习时长90分钟,第一天完毕。
    学习记录1
    学习记录2
这篇关于【学习打卡】第1天 Nginx学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!