《WEB服务器——Nginx》Nginx配置详解

  • nginx如何处理高并发?

  nginx采用了异步非阻塞的方式来处理请求,也就是说,nginx是可以同时处理成千上万个请求的。
  • ngin如何配置多个进程?

nginx在启动的时候,会启动一个master进程和多个worker进程。master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。而worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致。这样可以最大限度使用机器的资源。可以用下列命令查看服务器核数

[root@tomatocc ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores       : 2

然后在nginx.conf配置之文件中增加配置

worker_processes 2;
  • nginx如何配置每个进程的最大连接数?

nginx在实现时,是通过一个连接池来管理的,每个worker进程都有一个独立的连接池,连接池的大小是t通过worker_connections 参数进行控制。(一个nginx能建立的最大连接数,应该是worker_connections * worker_processes。当然,这里说的是最大连接数,对于HTTP请求本地资源来说,能够支持的最大并发数量是worker_connections * worker_processes,而如果是HTTP作为反向代理来说,最大并发数量应该是worker_connections * worker_processes/2。因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。)。该参数不能超过最大文件打开数。我们可以在linux终端中输入ulimit -a命令进行查看,或者用ulimit -n也可以直接查看
《WEB服务器——Nginx》Nginx配置详解_第1张图片

events {
	 #每个进程允许最大连接数
    worker_connections 1024
}
  • ngin如何配置请求头buff的大小?

我们需要知道,nginx会将整个请求头都放在一个buffer里面,这个buffer的大小通过配置项client_header_buffer_size来设置,如果用户的请求头太大,这个buffer装不下,那nginx就会重新分配一个新的更大的buffer来装请求头,这个大buffer可以通过large_client_header_buffers来设置,这个large_buffer这一组buffer,比如配置4 8k,就是表示有四个8k大小的buffer可以用。(nginx的client_header_buffer_size默认值为1kb,因此如果请求头大小超过1kb,就需要优化)

这里,建议直接使用large_client_header_buffers参数进行优化即可,即配置为:large_client_header_buffers 4 4k;这里的4k参数值,可以参考服务器的分页大小进行设置。可以用getconf PAGESIZE命令来获取。(单位:kb)

[root@tomatocc ~]# getconf PAGESIZE
4096

然后在nginx.conf配置之文件中增加配置(为什么第一个值为4,暂时找不到权威的说法,后续了解后会补充)

    server {
        listen       8088;
        server_name  127.0.0.1;

		large_client_header_buffers 4 4k;

附上nginx源码《WEB服务器——Nginx》Nginx配置详解_第2张图片

  • 如何配置keepalive的值?

首先,我们应该在知道什么是长连接呢?我们知道,http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建立TCP连接,而每一次的TCP连接是需要三次握手来确定的,如果客户端与服务端之间网络差一点,这三次交互消费的时间会比较多,而且三次交互也会带来网络流量。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

了解了这些后,我们就可以通过配置keepalive_timeout的来设置超时时间,如果配置为0,则表示关掉keepalive,此时,http版本无论是1.1还是1.0,客户端的connection不管是close还是keepalive,都会强制为close。

然后在nginx.conf配置之文件中增加配置

http {
    #服务端等待客户端请求的中最大超时时间(默认75s)
    keepalive_timeout  65;

欢迎关注本人个人公众号,交流更多技术信息

在这里插入图片描述

你可能感兴趣的:(开发栈----开发软件学习,nginx,nginx配置,nginx优化)