Nginx是一个轻量级,高性能,基于HTTP的,反向代理服务器,同时还是一个电子邮件服务器,Nginx是有俄罗斯人用c语言开发的,2004年10月发布第一个版本,国内很多大公司都在使用例如百度,京东,淘宝等等。
代理服务器根据代理对象的不同,可以分为正向代理和反向代理,这里的正和反是相对于客户端的角度。
正向代理
正向代理是对客户端的代理,客户端A想要从服务端C获取资源,由于某些原因不能正常访问,于是使用另外一台服务器主机B去访问服务端C,等到服务端C响应主机B后,主机B在转回给客户端A,此时的主机B就是A客户端的一个正向代理
客户端在使用正向代理的时候,就知道访问目标服务器的地址等信息,正向代理服务器是服务器的用户架设的主机,与服务端无关,服务端是不知道真正的客户端的存在
Nginx常见功能如下
反向代理
反向代理Reverse Proxy,是对服务端的代理,但从功能上说和正向代理没有区别,但是反向代理是为服务端架设的主机,与客户端无关,客户端认为自己访问的是服务本身,但其实真正访问的反向代理服务器。客户端在访问反向代理服务器时,根本就不知道真正访问的目标服务器的地址及信息,所有的访问都是通过反向代理的完成的,这就是和正向代理不同的地方。
客户端只能访问反向代理服务器,而真正的服务器是不能直接访问的,这样实现了隐藏和保护真正服务器的目的
Nginx特定
nginx的web请求处理机制
Nginx结合多进程机制和异步机制对外提供服务,异步机制就是异步非阻塞方式,Nginx的master进行会产生多个worker进程,maste进程管理每一个worker进程的生命周期,以及处理外部命令和处理perl脚本等,worker进程用于接受和处理客户端请求
每个woeker进程使用异步非阻塞方式处理多个客户端请求,当某个woeker进程接受到客户端请求以后,会调用IO进程处理,服务端没有立刻得到相应,woeker可以处理其他请求,当worker得到相应的时候,woker当前处理的事物会挂起,拿IO的结果相应客户端请求,woeker进程采用的是epoll事件驱动模型和io进行通讯,epoll模型底层使用的是回调callbock替代轮询,要比select模型效率高,
docker搭建nginx
docker
run
-d
-p 80:80
--name
webserver
nginx
docker cp 1abb674afe55:/etc/nginx/conf.d/default.conf /Users/wangxuan/Downloads/nginx/conf/conf.d/default.conf
docker cp 1abb674afe55:/usr/share/nginx/html /Users/wangxuan/Downloads/nginx/html
docker cp 1abb674afe55:/etc/nginx/nginx.conf /Users/wangxuan/Downloads/nginx/conf/nginx.conf
docker stop webserver
docker rm webserver
docker run -d -p 80:80 --name nginx -v /Users/wangxuan/Downloads/nginx/html:/usr/share/nginx/html -v /Users/wangxuan/Downloads/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /Users/wangxuan/Downloads/nginx/conf/conf.d:/etc/nginx/conf.d nginx