nginx是一款轻量级的web服务器/反向代理服务器/电子邮件(IMAP,POP3)代理服务器,并在一个BSD-like协议下发行。
nginx的特点是内存占用少,并发能力强。,在同类网页服务器中表现比较好。
静态资源的web服务器
http,smtp,pop3协议的反向代理服务器
缓存加速,负载均衡(负载均衡离不开反向代理,二者相互依存)
支持FastCGI(fpm,LNMP),uWSGI(python)等
模块化
支持SSL(证书https等)
基于名称和IP的虚拟主机
支持keepalive(长连接,不是高可用!)
支持平滑升级
定制访问日志、支持使用日志缓冲区提高日志存储性能
支持URL重写
支持路径别名
支持基于IP及用户的访问控制
支持速率限制,支持并发数限制
使用nginx结合FastCGI运行PHP、JSP、Perl等程序
使用nginx作反向代理、负载均衡、规则过滤
使用nginx运行静态HTML网页、图片
nginx与其他新技术的结合应用
nginx
由内核和模块组成。其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
核心模块
基础模块
第三方模块
nginx模块分为:核心模块、事件模块、标准Http模块、可选Http模块、邮件模块、第三方模块和补丁等
nginx模块被直接编译进nginx,属于静态编译方式。
启动时将模块编译为一个so文件,然后在配置文件中决定是否加载模块。
nginx启动,产生一个master进程,该进程不处理任何客户端请求,而是用来产生worker线程。worker线程用来处理多个request(请求)
基本的WEB服务请求步骤:
//防火墙selinux关闭 systemctl stop firewalld.service setenforce 0 //创建nginx用户 [root@node1 ~]# useradd -r -M -s /sbin/nologin nginx //安装开发工具组和依赖包 [root@node1 ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make [root@node1 ~]# yum -y groups mark install 'development tools'
//创建日志存放目录 [root@node1 ~]# mkdir -p /var/log/nginx [root@node1 ~]# chown -R nginx.nginx /var/log/nginx //下载源码包 [root@node1 ~]# cd /usr/src/ [root@node1 src]# wget http://nginx.org/download/nginx-1.20.0.tar.gz [root@node1 src]# ll ... -rw-r--r--. 1 root root 1061070 Apr 20 22:46 nginx-1.20.0.tar.gz //解压 [root@node1 src]# tar xf nginx-1.20.0.tar.gz [root@node1 src]# cd nginx-1.20.0/ //编译安装 [root@node1 nginx-1.20.0]# ./configure \ > --prefix=/usr/local/nginx \ #指定路径 > --user=nginx \ #指定用户 > --group=nginx \ #指定组 > --with-debug \ #启用debug测试 > --with-http_ssl_module \ #启用ssl证书模块 > --with-http_realip_module \ #启用http真实ip模块 > --with-http_image_filter_module \ #启用http图像过滤器模块 > --with-http_gunzip_module \ #启用http压缩模块 > --with-http_gzip_static_module \ #启用静态压缩 > --with-http_stub_status_module \ #启用状态页面 > --http-log-path=/var/log/nginx/access.log \ #指定日http访问日志路径 > --error-log-path=/var/log/nginx/error.log #指定报错日志路径 //启用多核心加速安装 [root@node1 nginx-1.20.0]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install
配置文件详解
默认是“nginx安装路径/conf/nginx.conf'
配置文件 | 作用 |
---|---|
nginx.conf | nginx的基本配置文件 |
mime.types | MIME类型关联的扩展文件 |
fastcgi.conf | 与fastcgi相关的配置 |
proxy.conf | 与proxy相关的配置 |
sites.conf | 配置nginx提供的网站,包括虚拟主机 |
//添加环境变量 [root@node1 nginx-1.20.0]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh [root@node1 nginx-1.20.0]# source /etc/profile.d/nginx.sh [root@node1 nginx-1.20.0]# which nginx /usr/local/nginx/sbin/nginx //语法 [root@node1 nginx-1.20.0]# nginx -help nginx version: nginx/1.20.0 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix] [-e filename] [-c filename] [-g directives] Options: -?,-h : this help #帮助信息 -v : show version and exit #显示版本 -V : show version and configure options then exit #显示版本和配置选项 -t : test configuration and exit #测试配置并退出 -T : test configuration, dump it and exit #测试配置 -q : suppress non-error messages during configuration testing #配置测试期间只输出错误信息 -s signal : send signal to a master process: stop, quit, reopen, reload #传递控制信号给主进程 -p prefix : set prefix path (default: /usr/local/nginx/) #设置路径 -e filename : set error log file (default: /var/log/nginx/error.log) #设置错误日志路径 -c filename : set configuration file (default: conf/nginx.conf) #设置配置文件路径 -g directives : set global directives out of configuration file #从配置文件中设置全局指令
//启动测试 [root@node1 nginx-1.20.0]# nginx [root@node1 nginx-1.20.0]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:80 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:*