一、Nginx是什么?
一、Nginx是什么?
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。
Nginx支持热部署,启动简单,可以做到7*24不间断运行。几个月都不需要重新启动。
二、Nginx的反向代理(扩展:正向代理)
首先,看一张关于正向代理和反向代理的图片
在这里,用通俗易懂的方式解释一下:
正向代理: 我们平时需要访问国外的浏览器是不是很慢,比如我们要看推特,看GitHub等等。我们直接用国内的服务器无法访问国外的服务器,或者是访问很慢。所以我们需要在本地搭建一个服务器来帮助我们去访问。那这种就是正向代理。(浏览器中配置代理服务器)
反向代理: 那什么是反向代理呢。比如:我们访问淘宝的时候,淘宝内部肯定不是只有一台服务器,它的内部有很多台服务器,那我们进行访问的时候,因为服务器中间session不共享,那我们是不是在服务器之间访问需要频繁登录,那这个时候淘宝搭建一个过渡服务器,对我们是没有任何影响的,我们是登录一次,但是访问所有,这种情况就是 反向代理。对我们来说,客户端对代理是无感知的,客户端不需要任何配置就可以访问,我们只需要把请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。(在服务器中配置代理服务器)
三、Nginx的负载均衡
什么是负载均衡?
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
简单来说就是:现有的请求使服务器压力太大无法承受,所有我们需要搭建一个服务器集群,去分担原先一个服务器所承受的压力,那现在我们有ABCD等等多台服务器,我们需要把请求分给这些服务器,但是服务器可能大小也有自己的不同,所以怎么分?如何分配更好?又是一个问题。
Nginx给出来三种关于负载均衡的方式:
轮询法(默认方法):
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
适合服务器配置相当,无状态且短平快的服务使用。也适用于图片服务器集群和纯静态页面服务器集群。
weight权重模式(加权轮询):
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的
情况。
这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充分发挥,有效利用资源。weight和访问比率成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大
ip_hash:
上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
四、Nginx的动静分离!
Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式
目前,通过使用Nginx大大提高了网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼!
部署nginx
//准备工作
[root@localhost ~]# hostnamectl set-hostname nginx .example .com [root@localhost ~]# bash//关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# cat /etc/sysconfig/selinux
SELINUX=disabled//配置yum源
[root@localhost ~]# ls /etc/yum . repos .d/
CentOS-Base . repo epel . repo epel-testing . repo
epel-modular . repo epel-testing-modular . repo//创建nginx用户
[root@localhost ~]# useradd - r -M -s /sbin/nologin nginx//安装开发工具包
[root@localhost ~]# yum -y groups mark install 'Development Tools ' Complete !
//安装依赖包和一些常用工具
[root@localhost ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make wget
Complete !//创建日志存放目录
[root@localhost ~]# cd /var/log/
[root@localhost log]# mkdir nginx
[root@localhost log]# ls -ld nginx/
d rwxr-x r-x 2 root root 6 Oct 10 10 :55 nginx/[root@localhost log]# chown nginx .nginx /var/log/nginx/ -R
[root@localhost log]# ls -ld nginx/
d rwxr-x r-x 2 nginx nginx 6 Oct 10 10 :55 nginx///解压nginx源码包
[root@localhost ~]# ls
anaconda-ks .cfg nginx-1 .22 .0 .tar .gz
[root@localhost ~]# tar -zxf nginx-1 .22 .0 .tar .gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
bin etc games include lib lib64 libexec nginx-1 .22 .0 sbin share
s rc//编译安装
[root@localhost local]# cd nginx-1 .22 .0/
[root@localhost nginx-1 .22 .0]# ls
auto CHANGES . ru configure html man s rc
CHANGES conf contrib LICENSE README[root@localhost nginx-1 .22 .0]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-debug \
> --with-http_ssl_module \
> --with-http_ realip_module \
> --with-http_image_filter_module \
> --with-http_gunzip_module \
> --with-http_gzip_static_module \
> --with-http_stub_status_module \
> --http-log-path=/var/log/nginx/access .log \
> --error-log-path=/var/log/nginx/error .log[root@localhost nginx-1 .22 .0]# make [root@nginx nginx-1 .22 .0]# make[root@localhost nginx-1 .22 .0]# ls
auto CHANGES . ru configure
CHANGES conf contribinstallhtml
LICENSEMakefile manobjs s rc
README//配置环境变量
[root@localhost nginx-1 .22 .0]# echo 'export PATH=/usr/local/nginx/sbin:$PATH ' > /etc/profile .d/nginx .sh[root@nginx nginx-1 .22 .0]# . /etc/profile .d/nginx .sh//查看nginx端口有没有起来
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address :Port Peer Address :P
ortLISTEN
LISTEN0
0128
1280.0.0.0 :22
[ : :] :220.0.0.0 :*
[ : :] :*//没有,只需要输入nginx命令就可以起来
[root@localhost ~]# nginx
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address :Port Peer Address :P
ortLISTEN 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 [ : :] :*// -t检查配置文件的语法
[root@localhost ~]# nginx -t
nginx : the configuration file /usr/local/nginx/conf/nginx .conf syntax is ok
nginx : configuration file /usr/local/nginx/conf/nginx .conf test is succes
sful// -v查看nginx的版本
[root@localhost ~]# nginx -v
nginx version : nginx/1 .22 .0// -s 发送服务控制信号
[root@localhost ~]# nginx -s stop
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address :Port Peer Address :P
ort
LISTEN 0 128 0 .0 .0 .0 :22 0 .0 .0 .0 :*
LISTEN 0 128 [ : :] :22 [ : :] :*
(此时nginx的80端口已经被关掉了,只需要输入nginx的命令就可以启动)// -c指定配置文件路径
[root@localhost ~]# cd /usr/local/nginx [root@nginx nginx]# ls client_body_temp fastcgi_temp logs
conf html proxy_temp[root@localhost nginx]# cd conf/
[root@localhost conf]# ls
fastcgi .conf koi-win fastcgi .conf .default mime .typessbin uwsgi_temp
scgi_tempscgi_params
scgi_params .defaultfastcgi_params fastcgi_params .default koi-utfmime .types .default nginx .conf
nginx .conf .defaultuwsgi_params
uwsgi_params .default
win-utf[root@localhost conf]# cp nginx .conf /opt/
[root@localhost conf]# cp mime .types /opt/
[root@localhost conf]# ls /opt/
mime .types nginx .conf[root@localhost conf]# ss -antl
State Recv-Q Send-Q Local Address :Port Peer Address :P
ortLISTEN
LISTEN0
0128
1280.0.0.0 :22
[ : :] :220.0.0.0 :*
[ : :] :*(在nginx80端口没有起来的情况下)
[root@localhost conf]# nginx -c /opt/nginx .conf
[root@localhost conf]# ss -antl
State Recv-Q Send-Q Local Address :Port Peer Address :P
ortLISTEN 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 [ : :] :*此时要关掉opt下的nginx
[root@localhost conf]# nginx -c /opt/nginx .conf -s stop
[root@localhost conf]# ss -antl
State Recv-Q Send-Q Local Address :Port Peer Address :P
ortLISTEN
LISTEN0
0128
1280.0.0.0 :22
[ : :] :220.0.0.0 :*
[ : :] :*[root@localhost conf]# nginx -c /opt/nginx .conf -t
nginx : the configuration file /opt/nginx .conf syntax is ok
nginx : configuration file /opt/nginx .conf test is successful
(此时只是测试,服务并没有启动)[root@localhost conf]# nginx -c /opt/nginx .conf
[root@localhost conf]# ss -antl
State Recv-Q Send-Q Local Address :Port Peer Address :P
ortLISTEN 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 [ : :] :*
( -c可以在启动nginx的时候,可以指定要读取的配置文件)
一、Nginx是什么?相关推荐
- nginx配置http、https访问,nginx指定ssl证书,阿里云腾讯云华为云设置nginx https安全访问
nginx配置http.https访问 要设置https访问需要从对应的云厂商申请证书,并下载Nginx证书到服务器. 我这里从阿里云申请了免费的域名证书,然后将证书放置在服务器的/etc/ssl/. ...
- Web项目使用nginx实现代理端口访问,看这篇就够了
在搭建服务器的时候,项目部署在tomcat上,要访问项目,则需要加上端口号,如何隐藏端口号来访问呢,这就用到了nginx. nginx可以在docker上安装,也可以在linux上安装,这里我建议使用 ...
- nginx介绍及常用功能
什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务. Apache:重量级的,不支持高并发的服务器.在Apache上运行数以万计的并发访 ...
- Nginx搭建负载均衡集群
(1).实验环境 youxi1 192.168.5.101 负载均衡器 youxi2 192.168.5.102 主机1 youxi3 192.168.5.103 主机2 (2).Nginx负载均衡策 ...
- 快速通过nginx配置域名访问
配置nginx进行域名访问文件 在nginx安装目录下的conf目录下新建一个配置文件,比如你新加的域名为admin.hello.com,你希望通过这个域名访问admin项目,那么新建一个admin. ...
- Docker学习(七)-----Docker安装nginx
基本安装 1. 拉取Nginx镜像 docker pull nginx:latest 2. 查看本地镜像列表(即可看到nginx) docker images 3. 运行容器 docker run - ...
- 使用阿里云服务器安装docker,并用nginx示例
一.前言 之前对docker了解不多,自从使用了一次之后,就感觉这个产品对开发者实在是太友好了,可以迅速在Linux,window等平台部署服务.常见的有数据库,nginx,消息队列,redis等.利 ...
- Centos7.4安装Nginx
Centos7.4安装Nginx 使用yum命令 一.安装准备 首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++.gcc.open ...
- nginx将泛解析的匹配域名绑定到子目录配置方法
应用场景: http://zzl.lteam.cn/ 访问/usr/local/boke/lteam.cn/zzl 目录下的 index.html http://lj.lteam.cn/ 访问/usr ...
- ubuntu搭建nginx环境
1.首先给服务器上配置好JDK环境,之前有说过,在这就不多说了.本人安装的是JDK1.6. 2. 准备好2个TOMCAT,上传到服务器上.修改tomcat端口,所有端口必须不一致.本次演示用tomca ...
最新文章
- 什么是初效过滤器_初效过滤器主要用于过滤多少微米的杂质?
- Node.js模块化开发||Node.js中模块化开发规范
- 设计模式之职责链模式永不罢休(二十一)
- 【python】python2.x中的除法
- 关于WCF、WebAPI、WebService之间的区别总结 分布式通信技术
- 风靡全球的15则数学动图:让你秒懂数学概念,看后觉得相见恨晚啊
- Socket编程实践(1) --TCP/IP简述
- CVPR自动驾驶运动预测挑战赛:轻舟智航夺冠方案
- iOS 手机摇一摇功能
- python新手入门代码-介绍十个Python小案例,新手入门就在这里
- Android Studio一直显示Building“project name”Gradle project info问题详解
- Qt使用dump定位崩溃位置
- 【2021-04-25】APP逆向之某智网加密数据
- 工作站的容器化和虚拟化实践
- 金融数据智能峰会 | 数据规模爆炸性增长,企业如何进行精准决策?云原生数据仓库数据化运营实战分享
- C#生成随机数100次都是一样的数
- zblog采集-织梦全自动采集插件-织梦免费采集插件
- 酷我音乐在计算机其他的图标怎么去掉,怎么清除酷我音乐2016右下角广告
- SPM8和哪个版本的matlab配套,SPM8处理流程
- 抓取京东的某个商品价格
热门文章
- flask框架----介绍
- 获得CDN牌照之后 北京供销大数据集团准备做些什么?
- 【论文笔记】(二)CheXNet: Radiologist-Level Pneumonia Detection on Chest X-Rays with Deep Learning
- sorl 查询 跟 mybatisboot集成sorl
- 手机表白弹幕小程序源码
- 贵州:“区块链+”促经济转型产业升级
- Linux学习---静态库 动态库
- 小程序合作开发(+gitee)
- MES生产效率:实现智能制造的关键技术
- 视频播放小程序-小程序媒体API-基础入门