linux——基础知识梳理3(nginx)

一、nginx有哪些应用

1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

 二、nginx与其他web服务器在处理web页面时有何不同

Nginx服务器的一个显著优势是能够同时处理大量并发请求。它结合多进程机制和异步机制对外提供服务,异步机制使用的是异步非阻塞方式

        Nginx服务器启动后,可以产生一个主进程(master process)和多个工作进程(worker processes),其中可以在配置文件中指定产生的工作进程数量。Nginx服务器的所有工作进程都用于接收和处理客户端的请求。这类似于Apache使用的改进的多进程机制,预先生成多个工作进程,等待处理客户端请求。

  每个工作进程使用了异步非阻塞方式,可以处理多个客户端请。当某个工作进程接收到客户端的请求以后,调用IO进行处理,如果不能立即得到结果,就去处理其他的请求;儿客户端在此期间业务需等待响应,可以去处理其他的事情;当IO调用返回结果时,就会通知此工作进程;该进程的到通知,暂时挂起当前处理的事务,去响应客户端请求。

  客户端请求数量增长、网络负载繁重时,Nginx服务器使用多进程机制能够保证不增长对系统资源的压力;同时使用异步非阻塞方式减少了工作进程在I/O调用上的阻塞延迟,保证了不降低对请求的处理能力。

三、nginx和Apache在实现原理有什么不同?

Apache有三种工作模块,分别为prefork、worker、event。

Nginx会按需同时运行多个进程:一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等。所有进程均是仅含有一个线程,并主要通过“共享内存”的机制实现进程间通信。主进程以root用户身份运行,而worker、 cache loader和cache manager均应以非特权用户身份运行。

  • prefork:多进程,每个请求用一个进程响应,这个过程会用到select机制来通知。
  • worker:多线程,一个进程可以生成多个线程,每个线程响应一个请求,但通知机制还是select不过可以接受更多的请求。
  • event:基于异步I/O模型,一个进程或线程,每个进程或线程响应多个用户请求,它是基于事件驱动(也就是epoll机制)实现的

 四、nginx 虚拟主机,地址重写,负载均衡,反向代理。

虚拟主机

1.、基于域名的虚拟主机:所谓基于域名的虚拟主机,意思就是通过不同的域名区分不同的虚拟主机,基于域名的虚拟主机是企业应用最广的虚拟主机类型,几乎所有对外提供服务的网站使用的都是基于域名的主机,例如www.test1.com www.test2.com等

2 、基于端口的虚拟主机:所谓基于端口的虚拟主机,意思就是通过不同的端口来区分不同的虚拟主机,此类虚拟主机对应的企业应用主要为公司内部的网站,例如:一些不希望直接对外提供用户访问的网站后台等,访问基于端口的虚拟主机,地址里要带有端口号,例如http://www.test.com:81 http://www.test.com:82等

3、 基于IP的虚拟主机:基于IP的虚拟主机,意思就是通过不同的IP区分不同的虚拟主机,此类虚拟主机对应的企业应用非常少见,一般不同的业务需要使用多IP的场景都会在负载均衡上进行IP绑定,我不是在web上绑定IP来区分不同的虚拟机。

三种虚拟主机类型均可独立使用,也可以混合使用。

地址重写

获取一个来访的URL请求,然后改写成服务器可以处理的另一个URL的过程

优点:缩短URL,隐藏实际路径,提高安全性;

易于用户记忆和键入;易于被搜索引擎收录。

负载均衡

 

A)轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器;

B)ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。

C)url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候效率。

D)fair:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持 fair的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair模块。


反向代理

 

正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

反向代理,架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

五、nginx常用模块有哪些?分别实现了哪些功能?第三方模块如何添加?

ngx_http_access_module模块           访问控制
ngx_http_auth_basic_module模块      身份验证
ngx_http_stub_status_module模块     状态信息
ngx_http_log_module模块                  日志模块
ngx_http_gzip_module模块                压缩模块
ngx_http_ssl_module模块                 ssl模块
ngx_http_rewrite_module模块          将用户请求的URI基于PCRE regex所描述的模式进行检查,而后完成重定向替换
ngx_http_referer_module模块          防盗链模块
ngx_http_headers_module模块        向由代理服务器响应给客户端的响应报文添加自定义首部,或修改指定首部的值;
https://blog.csdn.net/L835311324/article/details/82560275六、

六、lamp与lnmp的区别

二者的区别主要在与nginx与apache的区别

1、二者最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程 。nginx处理静态文件好,耗费内存少.但无疑apache仍然是目前的主流,有很多丰富的特性.所以还需要搭配着来.当然如果能确定nginx就适合需求,那么使用nginx会是更经济的方式。

 2、nginx的负载能力比apache高很多。最新的服务器也改用nginx了。而且nginx改完配置能-t测试一下配置有没 有问题。

 3、apache重启的时候发现配置出错了,会很崩溃,改的时候都会非常小心翼翼现在看有好多集群站,前端nginx抗并发,后端apache集群, 配合的也不错。

 4、nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。

5、从经验来看,nginx是很不错的前端服务器,负载性能很好,nginx,用webbench模拟10000个静态文件请求毫不吃力。 apache对php等语言的支持很好,此外apache有强大的支持网络,发展时间相对nginx更久,bug少但是apache有先天不支持多核心处理负载鸡肋的缺点,建议使用nginx做前端,后端用apache。大型网站建议用nginx自代的集群功能。

6、大部分情况下nginx都优于APACHE,比如说静态文件处理、PHP-CGI的支持、反向代理功能、前端 Cache、维持连接等等。在Apache+PHP(prefork)模式下,如果PHP处理慢或者前端压力很大的情况下,很容易出现Apache进程数 飙升,从而拒绝服务的现象。

7、Apache在处理动态有优势,Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache吧!

8、一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。

nginx如何优化
1.gzip压缩优化。
2.expires缓存优化。
3.网络I/O事件模型优化。
4.隐藏软件名称和版本号。
5.防盗链优化。
6.禁止恶意域名解析。
7.禁止通过IP地址访问网站。
8.HTTP请求方法优化。
9.防DOS×××单IP并发连接的控制,与连接速率控制。
10.严格设置web站点目录的权限。
11.将nginx进程及站点运行与监牢模式。
12.通过robots协议以及http_user_agent防爬虫优化。
13.配置错误页面根据错误码指定网页反馈给用户。
14.nginx日志相关优化。
访问日志切割轮询、不记录指定元素日志、最小化日志目录权限。
15.限制上传到资源目录的程序被访问,防止×××**系统破坏文件。
16.fastcgi参数buffer和cache以及超时等优化。
17.php.ini和php-fpm.conf配置文件的优化。
18.有关web服务的linux内核方面深度优化(网络连接、IO、内存等)。
19.nginx加密传输优化SSL
20.webu武器磁盘挂载及网络文件系统优化。
21.使用nginx cache。
22.nginx WAF(nginx+lua)安全。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值