Nginx第一章:Nginx的安装和构建虚拟主机

一、Nginx

1.Nginx的简介

1.一款高新能、轻量级Web服务软件

2.系统资源消耗低

3.对HTTP并发连接的处理能力高

4.单台物理服务器可支持30 000~50 000个并发请求

2.Nginx的模块和作用

main模块:全局配置模块,所有模块都要执行遵守,配置运行nginx服务器的用户(组)、worker_process数(进程)、nginx进程PID存放路径、错误日志存放路径、配置文件的引入等

stream服务模块:实现反向代理功能,包括TCP协议代理

邮件服务模块:主要用于支持Nginx的邮件服务,对POP3协议、IMAP协议和SMTP协议的支持

第三方模块:二次开发,为了扩展Nginx服务器应用,完成开发者自定义功能,Json支持、Lua支持等

events模块:影响nginx服务器与用户的网络连接

http模块:跟web服务相关,主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,包含几个子模块,自定义服务日志、允许sendfile方式传输文件、连接超时时间、单连接请求数上限、Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等

location模块:uri网址定位

server模块:服务模块,配置80端口监听、虚拟主机、DNS域名解析等

auth_basic模块:对网页设置用户名密码

gzip模块:压缩

proxy模块:设置后端IP地址、端口号及http和加密的https

ssl模块:https加密

3.Nginx三大作用:反向代理、负载均衡、动静分离

反向代理:在服务端配置,客户端访问服务器A,服务器A为代理服务器,将客户服务再转发到服务器B

作用:缓存,将服务器的响应缓存在自己的内存中,减少服务器压力

正向代理:在客户端配置,配置完后再去访问具体服务,即代理服务器代理了客户端再去和目标服务器进行交互

作用:提高访问速度,隐藏客户端真实IP地址

负载均衡:分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其他关键任务服务器等,从而共同完成工作任务

nginx七层负载均衡调度算法

1.轮询(默认调度算法)

特点:每个请求按时间顺序逐一分配到不同的后端服务器处理

适用业务场景:后端服务器硬件性能配置完全一致,业务无特殊要求时使用

2.加权轮询

特点:指定轮询几率,权重(weight值)和访问比例成正比,用户请求按权重比例分配

适用业务场景:用于后端服务器硬件性处理能力不平均的情形

3.ip_hash(IP哈希)

特点:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session会话保持问题

适用业务场景:适用于需要账号登录的系统,会话连接保持的业务

4、最少连接数 least_conn

特点:按nginx反向代理与后端服务器之间的连接数,连接数最少的优先分配。

适用业务场景:适用于客户端与后端服务器需要保持长连接的业务

5、响应时间 fair(需编译安装第三方模块 ngx_http_upstream_fair_module)

特点:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
适用业务场景:对访问响应速度有一定要求的业务

6、url_hash(URL分配 )(需编译安装第三方模块 ngx_http_upstream_hash_module)

特点:按访问url的hash结果来分配请求,使同一个url访问到同一个后端服务器。

适用业务场景:适用于后端服务器为缓存服务器时比较有效

动静分离:采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。

在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式,通过使用Nginx提高网站的响应速度,优化用户体验

 二、Nginx和Apache的区别

1.Apache(高稳定)

Apache是一个同步多进程模型,一个连接对应一个进程

1.rewrite更强大(rewrite主要功能是实现统一资源定位符URL的跳转)

2.模块多,基本想到的都可以找到

3.少bug,更加稳定(nginx相对较多)

4.PHP支持比较简单(nginx需要配合其他后端用)

5.处理动态请求更有优势(nginx更适合静态与反向)

2.Nginx(高性能)

Nginx是一个异步非阻塞模型:多个连接(万级别)对应一个进程

1.轻量级,采用C编写,占用更少的内存与资源

2.抗并发/高并发,以epoll and kqueue 作为开发模型,负载能力高,高并发下能够保持低资源低消耗高性能(apache在PHP处理慢或前端压力很大时,容易出现进程数飙升从而拒绝服务)

3.处理静态文件好,静态处理性能比apache高三倍以上

4.设计高度模块化,编写模块相对简单

5.配置简洁,正则配置更简单,且更改完可以使用 -t 测试(apache配置复杂,重启时发现出错,会很崩溃)

6.作为负载均衡服务器,支持七层负载均衡,可以有效防止ddos攻击

7.本身是一个反向代理服务器,也可以作为邮件代理服务器使用

8.支持热部署,支持在线升级

三、Nginx安装

1.yum安装

#安装依赖包

yum install -y epel-releas

#yum方式安装

yum install -y nginx

2.编译安装

#安装依赖包

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel

3.新建nginx用户

#新建nginx用户便于管理

useradd -M -s /sbin/nologin nginx

4.安装依赖包

cd  /opt

官网下载包:wget http://nginx.org/download/nginx-1.18.0.tar.gz

tar xf  nginx-1.18.0.tar.gz

cd nginx-1.18.0

创建/apps/nginx文件夹

mkdir  /apps/nginx  -p 

 5.安装依赖环境、功能模块

./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

6.编译安装

make -j2 && make install

7.给nginx加权限

chown  -R  nginx.nginx  /apps/nginx

8.添加软连接,直接启动不需要绝对路径

ln -s /apps/nginx/sbin/nginx /usr/sbin

9.nginx开机自启(按需添加):

vim /usr/lib/systemd/system/nginx.service
#建立文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target

重新加载配置:systemctl daemon-reload

设置开机自启立即启动:systemctl enable --now nginx   ##如果卡住是因为logs下有nginx.pid文件删除即可

修改权限:chown -R nginx.nginx /apps/nginx

四、Nginx的信号使用

nginx命令支持向其发送信号,实现不同功能

#查询nginx信号使用规则

nginx  -h

信号功能
nginx -v显示版本
nginx -V显示编译详细情况、模块等信息
nginx -t检查语法格式
nginx -T打印当前配置
nginx -s发送信号
nginx -s stop立即关闭
nginx -s quit无伤害退出,不影响业务的状态下退出
nginx -s reload重新加载配置文件
nginx -s  USR1分割日志
nginx -s  USR2智能升级
nginx -g 'user jiujiu;' 以酒酒身份运行,默认是以nginx身份
nginx -g 'daemon off;'前台运行命令

五、构建虚拟主机

1.基于域名的虚拟主机

#创建子配置文件

vim  /apps/nginx/conf/nginx.conf

在34行添加:include  /apps/nginx/conf.d/*.conf;

#保存后检查语法

nginx  -t

#创建并切换到子配置文件目录

mkdir  /apps/nginx/conf.d  -p

cd  /apps/nginx/conf.d

 

#编辑配置文件

vim eva.conf

server {

            listen  192.168.7.20:80;

            server_name www.eva.com;

       location / {

            root  /data/nginx/html/eva;

       }

}

server {

            listen  192.168.7.20:80;

            server_name www.es.com;

        location / {

            root /data/nginx/html/es;

        }

}

 

#构建数据文件夹

mkdir /data/nginx/html/es  -pv

mkdir /data/nginx/html/eva  -pv

#构建数据文件

echo  eva  > /data/nginx/html/eva/index.html

echo  es  >  /data/nginx/html/es/index.html

 #刷新nginx

nginx  -s  reload

#切换到第二台虚拟机(测试)修改本地host文件,添加对应映射

vim  /etc/hosts

192.168.7.100  www.eva.com

192.168.7.100  www.es.com

#使用第二台虚拟机curl域名

curl  www.eva.com

curl  www.es.com

2.基于端口的虚拟主机

IP和域名相同,只用更改root路径和端口号即可,注意刷新nginx

拿第二台虚拟机curl端口号

curl  192.168.7.20:80

curl  192.168.7.20:8080

3.基于IP的虚拟主机

#添加虚拟网卡

ifconfig ens33:0 192.168.7.21/24

#修改配置文件,并检查nginx,刷新nginx

vim  /apps/nginx/conf.d/eva.conf

nginx -t

nginx -s reload

#切换到第二台虚拟机(测试)修改本地host文件,添加对应映射

vim /etc/hosts

192.168.7.20 www.eva.com

192.168.7.21 www.es.com

#拿第二台虚拟机curl虚拟主机的IP地址

curl  192.168.7.20

curl  192.168.7.21

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值