Nginx的认识,安装,使用
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
反向代理
正向服务器:隐藏用户,目标服务器并不知道真正访问的是谁,由代理服务器代替访问。如A想向C借钱,基于某种原因,不能直接找C,于是通过找B,B去找C达到借C的钱的目的,C并不知道是A借的钱。
反向服务器:隐藏服务,访问用户不知道提供的服务的是谁,由代理服务器决定。如A找B借钱,B自己没有,决定去找C或者D借钱,然后借给A,A只知道是找B借的钱,并不知道C,D的存在。
安装
1.下载(通常我们下载stable版本)
https://nginx.org/en/download.html
wget https://nginx.org/download/nginx-1.20.2.tar.gz
2.安装依赖环境
gcc环境:
yum install gcc-c++
PCRE库,用于解析正则表达式:
yum install -y pcre pcre-devel
zlib压缩和解压缩依赖:
yum instal -y zlib zlib-devel
ssl安全的加密套接字协议层,用户http安全传输,也就是https:
yum install -y openssl openssl-devel
3.解压
tar -zxvf nginx-1.20.2.tar.gz
4.创建nginx的临时目录,不然启动报错
mkdir /var/temp/nginx -p
5.添加配置,创建编译安装文件makefile (各配置项均为可选)
./configure --prefix=/usr/local/nginx #指定安装目录
--pid-path=/var/run/nginx/nginx.pid #指向nginx的pid
--lock-path=/var/lock/nginx.lock #锁定安装文件
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--with-http_gzip_static_module
--http-client-body-temp-path=/var/temp/nginx/client
--http-proxy-temp-path=/var/temp/nginx/proxy
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi
--http-scgi-temp-path=/var/temp/nginx/scgi
--with-http_ssl_module #开启ssl支持
7. 编译安装
make && make install
8. 启动、停止、重启
启动:进入sbin目录: ./nginx
启动后即可通过 http://ip 访问,默认端口为80
停止:./nginx -s stop 或者 ./nginx -s quit
重启:./nginx -s reload 每次修改配置文件后需要重启生效
配置介绍
1.配置结构
# main 全局配置
event { #event 配置工作模式以及连接数
}
http{ #http相关的配置
}
server { server 虚拟主机,对应每一个host:port
location 匹配正则 { #路由规则,具体跳转
}
}
}
2.基础配置
# 工作进程数,实际处理请求的进程
worker_processes 1;
events {
# 每个工作进程支持的连接数
worker_connections 1024;
}
http {
# 支持文件类型映射表,对应conf/mine.types中的文件
include mime.types;
# 默认的文件类型
default_type application/octet-stream;
#开启系统调用sendfile(),提升数据网络传输效率
sendfile on;
# 访问超时时间
keepalive_timeout 65;
# 开启gzip压缩功能,提升传输效率
gzip on;
# 配合gzip使用,限制最小被压缩的文件,小于1m不压缩
gzip_min_length 1024;
# 配合gzip使用,压缩的级别,比例太大消耗cpu资源,合理使用
gzip_comp_level 3;
# 压缩文件类型列表
gzip_types text/css application/javascript
upstream urls { # 负载均衡配置
server 192.168.10.11:8080;
server 192.168.10.12:8080;
}
server { # 虚拟主机配置
listen 80; #监听访问的端口
server_name domainname.com; #监听访问的域名
location / { #路由配置,匹配根路径
root html; #路由的目录
index index.html index.htm; #默认访问的静态文件
}
proxy_pass https://192.168.10.11:8081;
}
location /shopping { # 路由到负载均衡器
proxy_pass https://urls;
}
location /mobile {
# 如访问http://localhost/mobile/aa.jpg
# root 路径的完全匹配,对应路径:mobile/html/aa.jpg
root html;
# alias 与root互斥使用,相当于别名,对应路径: html/aa.jpg
# alias html;
}
}
}
阻塞与非阻塞、同步与异步
同步阻塞方式(BIO):
发送方发送请求之后一直等待响应。 接收方处理请求时进行的IO操作如果不能马上等到返回结果,就一直等到返回结果后,才响应发送方,期间不能进行其他工作。
同步非阻塞方式(NIO):
发送方发送请求之后,一直等待响应。 接受方处理请求时进行的IO操作如果不能马上的得到结果,就立即返回,去做其他事情。 但是由于没有得到请求处理结果,不响应发送方,发送方一直等待。 当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方,发送方才进入下一次请求过程,如多路复用器。
异步阻塞方式:
发送方向接收方请求后,不等待响应,可以继续其他工作。 接收方处理请求时进行IO操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他操作。(实际不应用)
异步非阻塞方式(AIO): 发送方向接收方请求后,不等待响应,可以继续其他工作。 接收方处理请求时进行IO操作如果不能马上得到结果,也不等待,而是马上返回去做其他事情。 当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方。(效率最高)