仅对学习的Nginx知识点记录总结,方便回顾。
必备知识
C10k问题
由于互联网发展,用户增长所带来的高并发问题,指一个单及设备同时处理一万个客户端的问题。
Nginx的概念及作用
概念
Nginx是一个高性能的HTTP和反向代理WEB服务器,特点是占有内存少,并发能力强,中国大陆有很多使用Nginx网站:百度、京东、新浪、网易、腾讯、淘宝等。
WEB服务器:
又称网页服务器(Web Server),主要供嗯那个是为用户提供网上信息浏览服务。
HTTP:
超文本传输协议,一种广泛使用的网络协议,约定了数据的封装格式,传输方式,响应方式等等。
作用
作为静态网页的web服务器,支持CGI协议的动态语言,如perl,php等,但不支持java,只能通过tomcat完成Java程序。,注重效率,能经受高负载,最大可以承受50000个并发连接数。
优点
1、速度快,并发更高。单次请求何高并发请求环境下要比其它Web服务器响应速度要快,主要因为其采用多进程何I/O多路复用(epoll)的底层实现。
2、配置简单。扩展性强。Nginx由多模块组成,模块使用可通过配置文件配置添加,也可以开发服务于自己业务的定制模块。
3、高可靠性。采用多线程模式运行,其中有一个master主线程和多个worker进程(master管理,worker被管理),worker进程的数量可以手动设置,每个worker进程之间相互独立,可以快速切换worker,及时修补错误。
4、热部署。可以7*24小时无间断提供服务,在不停止的情况下,升级文件,更新配置,更换日志文件等。
5、成本低、BSD开源许可证。
反向代理
正向代理:
客户端无法直接访问服务端,需要一台中间服务器(可以访问到目标服务器)做代理从目标服务器获取数据并返回。
作用:
1、突破访问限制,访问国外网站。
2、提高访问速度。
3、隐藏IP。
反向代理:
使用代理服务器接受客户端请求,将从服务器获取的结果返回给请求的链接的客户端。
作用:
1、负载均衡。
2、提高访问速度,对一些静态内容,或大量访问的动态内容有缓存服务,提高访问速度·。
3、可以隐藏服务端,在服务端与客户端之间架设防火墙,排查恶意软件,网络攻击,加密等等,保护服务端安全。
区别:
1、正向代理为客户端代理,反向代理为服务端代理,前者是帮助客户端访问其无法访问的资源,后者是帮助服务器做负载均衡,安全防护等。
2、正向代理一般有客户端架设,反向代理由服务端架设。
3、正向代理,服务器不知道自己的真正客户端是谁,反向代理客户端不知道真正的服务端是谁。
4、作用和目标不同。正向代理主要用来解决访问限制,反向代理主要做负载均衡,安全防护,二者聚能提高访问速度。
负载均衡
定义:
负载均衡就是分担到多个操作单元上进行操作,共同完成工作任务。
问题引入:
一般的架构模式是客户端发送请求到服务器,再由服务器处理请求,必要时会与数据库发生交互(查询,修改,删除等),服务器处理完毕时,将结果返回给客户端。
上述架构模式在并发量较低时采用比较合适,成本较低,但在高并发场景下使用,可能会导致服务器崩溃,这是由于服务器性能瓶颈导致的。
解决方案:
1、升级服务器配置,加大内存,更换更好的CPU等等从物理方面提升服务器性能,但是随着硬件的提升,花费的成本也会越来越高。
2、(负载均衡)单个服务器无法解决,可以增加服务器数量,将原先集中于单个服务器上的请求分发到多个服务器上,将负载分发到不同较为廉价的服务器上,某种意义上还能够节约成本。
动静分离
主要是为了加快网站解析速度,可以将动态页面和静态页面有不同服务器解析,加快解析速度,降低单个服务器压力。
静态资源:亲段固定页面,包括HTML、CSS、JS、图片,无需数据库程序处理,直接就能显示的页面。访问效率较高。
动态资源:需要程序处理或者从数据库读取数据,能够根据不同条件在页面显示不同数据,如jsp,servlet。访问效率较低。
Nginx安装,常用命令和配置文件
Nginx核心组成
nginx二进制可执行文件
nginx.conf配置文件
error.log错误访问日志记录
acess.log访问日志记录
安装之前:
1、配置一台内核为2.6版本以上的Centos虚拟机,确保能够联网:
ping www.baidu.com //随便ping一个地址,能够连通即可。
2、关闭防火墙
//关闭防火墙(临时关闭,重启打开)
systemctl stop firewalld
//永久关闭(系统重启不会打开)
systemctl disable firewalld
//查看防火墙状态
systemctl status firewalld
如果出现 Active: inactive (dead)则防火墙已经关闭
3、停用selinux
sestatus //查看状态 diable为停用状态
//如果没有停用使用以下命令将SELINUX=disabled,保存并重启后生效。
vim /etc/selinux/config
安装
简单源码安装
安装之前需要准备:
1、GCC编译器
//查看gcc编译器是否安装或是否安装成功
gcc --version
//安装gcc编译器
yum install -y gcc
//如果不是管理员权限下可能会提示切换为管理员权限
sudo su
2、PCRE
兼容正则表达式库
//安装
yum install -y pcre pcre-devel
//检查是否安装成功
rpm -qa pcre pcre-devel
3、zlib
//安装
yum install -y zlib zlib-devel
//检查是否安装成功
rpm -qa zlib zlib-devel
4、OpenSSL
OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包进行通信,并且避免被窃听。
SSL:Secure Sockets Layer安全套接协议,保证两应用之间通信的保密性和可靠性,提供安全网页是需要用到OpenSSL库。
//安装
yum install -y openssl openssl-devel
//检查是否安装成功
rpm -qa openssl openssl-devel
以上步骤可通过一条命令进行全部安装
//安装
yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
//是否安装成功
rpm -qa gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
正式下载
1、进入官网复制需要安装版本的链接地址,然后使用wget命令进行下载,也可以先下载到本地,然后使用ftp工具上传到服务器。
wget http://nginx.org/download/nginx-1.20.2.tar.gz
2、管理下载的资源
//创建文件夹
mkdir -p nginx/core
//将下载的资源移动到创建的文件夹
mv nginx-1.20.2.tar.gz nginx/core
3、解压缩
//进入到资源文件夹下
cd nginx/core
//解压
tar -zxf nginx-1.20.2.tar.gz
4、进入到解压后的资源文件中,执行configure
cd nginx-1.20.2
//执行
./configure
5、编译和安装
make && make install
安装位置
usr/local/nginx
cd /usr/local/nginx
//进入到sbin
cd sbin
//启动nginx
./nginx
//查看ip
ifconfig
浏览器输入ip后出现此界面后安装成功:
yum安装
1、安装必备组件
sudo yum install yum-utils
2、要设置 yum 存储库,请创建以以下内容命名的文件:/etc/yum.repos.d/nginx.repo
vim /etc/yum.repos.d/nginx.repo
在创建的空文件里粘贴一下文本:
#稳定版
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
#主线版
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
创建成功后默认下载的是稳定版,如果要下载主线版,则需要执行以下命令:
sudo yum-config-manager --enable nginx-mainline
3、 直接安装:
sudo yum install -y nginx
4、启动nginx
//查看nginx相关文件
whereis nginx
//之后出现以下结果:
nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz
//到/usr/sbin目录下
cd /usr/sbin
//执行以下命令,启动nginx
./nginx
在浏览器输入对应ip出现一下页面说明安装成功: