Nginx学习笔记

一:理解Nginx

1:什么是Nginx

  Nginx (engine x) 是一个高性能的HTTP反向代理服务器,也是一个IMAP/POP3/SMTP服务器

2:Nginx特性

  (1)更快

  (2)高扩展性,Nginx的设计极具扩展性, 它完全是由多个不同功能、 不同层次、 不同类型且耦合度极低的模块组成。

  (3)高可靠性

  (4)低内存消耗

  (5)单机支持10万以上并发连接

  (6)热部署,即可以在7*24小时不间断提供服务

3:Nginx使用要求

  1:内核为2.6以上版本的操作系统  

    [root@localhost ~]# uname -a
    Linux localhost.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

  2:所需软件

    1:gcc编译器

      用户编译c语言程序

                     #yum install -y gcc

    2:PCRE库

      支持正则表达式

      #yum install -y pcre pcre-devel
    3:zlib库

      zlib库用于对HTTP包的内容做gzip格式的压缩 。
      #yum install -y zlib zlib-devel
    4:openSSL库
      如果我们的服务器不只是要支持HTTP, 还需要在更安全的SSL协议上传输HTTP, 那么就需要拥有OpenSSL了。 
      #yum install -y openssl openssl-devel
  3:linux内核参数优化
    首先需要修改/etc/sysctl.conf来更改内核参数,配置如下,然后执行sysctl -p命令生效。

#file-max: 这个参数表示进程(比如一个worker进程) 可以同时打开的最大句柄数, 这个参数直接限制最大并发连接数, 需根据实际情况配置。
fs.file-max = 999999 #tcp_tw_reuse: 这个参数设置为1, 表示允许将TIME-WAIT状态的socket重新用于新的TCP连接, 这对于服务器来说很有意义, 因为服务器上总会有大量TIME-WAIT状态的连接。
net.ipv4.tcp_tw_reuse = 1 #tcp_keepalive_time: 这个参数表示当keepalive启用时, TCP发送keepalive消息的频度。默认是2小时, 若将其设置得小一些, 可以更快地清理无效的连接。
net.ipv4.tcp_keepalive_time = 600
#tcp_fin_timeout: 这个参数表示当服务器主动关闭连接时, socket保持在FIN-WAIT-2状态的最大时间。
net.ipv4.tcp_fin_timeout = 30 #tcp_max_tw_buckets: 这个参数表示操作系统允许TIME_WAIT套接字数量的最大值,如果超过这个数字, TIME_WAIT套接字将立刻被清除并打印警告信息。 该参数默认为180000, 过多的TIME_WAIT套接字会使Web服务器变慢。
net.ipv4.tcp_max_tw_buckets = 5000
#ip_local_port_range: 这个参数定义了在UDP和TCP连接中本地(不包括连接的远端)端口的取值范围。
net.ipv4.ip_local_port_range = 1024 61000 #tcp_max_syn_backlog: 这个参数表示TCP三次握手建立阶段接收SYN请求队列的最大长度, 默认为1024, 将其设置得大一些可以使出现Nginx繁忙来不及accept新连接的情况时, #Linux不至于丢失客户端发起的连接请求。
net.core.netdev_max_backlog = 8096 #net.ipv4.tcp_rmem: 这个参数定义了TCP接收缓存(用于TCP接收滑动窗口) 的最小值、 默认值、 最大值。 net.ipv4.tcp_rmem = 4096 32768 262142 #net.ipv4.tcp_wmem: 这个参数定义了TCP发送缓存(用于TCP发送滑动窗口) 的最小值、 默认值、 最大值。 net.ipv4.tcp_wmem = 4096 32768 262142 #netdev_max_backlog: 当网卡接收数据包的速度大于内核处理的速度时, 会有一个队列保存这些数据包。 这个参数表示该队列的最大值。 net.core.netdev_max_backlog = 8096 #rmem_default: 这个参数表示内核套接字接收缓存区默认的大小。 net.core.rmem_default = 262144 #wmem_default: 这个参数表示内核套接字发送缓存区默认的大小。 net.core.wmem_default = 262144 #rmem_max: 这个参数表示内核套接字接收缓存区的最大大小。 net.core.rmem_max = 2097152 #wmem_max: 这个参数表示内核套接字发送缓存区的最大大小。 net.core.wmem_max = 2097152
#tcp_syncookies: 该参数与性能无关, 用于解决TCP的SYN***。 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn.backlog=1024

 

4:安装Nginx

    下载地址:http://nginx.org/en/download.html寻找一个合适的版本进行下载。

    安装:

$tar -zxvf nginx-1.13.8.tar.gz
#configure命令做了大量的“幕后”工作, 包括检测操作系统内核和已经安装的软件, 参数的解析, 中间目录的生成以及根据各种参数生成一些C源码文件、 Makefile文件等。 $./configure
#make命令根据configure命令生成的Makefile文件编译Nginx工程, 并生成目标文件、 最终的二进制文件。 $make
#make install命令根据configure执行时的参数将Nginx部署到指定的安装目录, 包括相关目录的建立和二进制文件、 配置文件的复制。 $make install

 

    启动:

       (2)指定配置文件启动方式

-c 测试:

  版本:

       快速停止:

           #/usr/local/nginx/sbin/nginx -s reload

        重新再新的日志文件打印日志

 

上一篇:服务器初始化


下一篇:centos7 内核优化