Nginx 简介和使用

本文详细介绍了Nginx的安装、配置及功能,包括反向代理、负载均衡、静态代理、动静分离和虚拟主机的设置。重点讲解了Nginx的负载均衡策略,如轮询、权重分配、ip_hash等,并提供了实际配置示例。此外,还提到了Nginx在静态资源处理上的优势,以及如何通过配置实现静态资源代理和虚拟主机的创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx简介

Nginx发展介绍

Nginx 是一个高性能的(静态)Web服务器反向代理服务器,也可以作为邮件代理服务器。
Nginx特点是占用内存少,并发处理能力强,以高性能、第系统资源消耗而闻名,Nginx官方测试为5万并发请求。与Nginx同类型的Web服务器还有Apache Lighttpd、Tengine(阿里巴巴的)等。国内互联网中大量使用了Nginx,比如新浪、网易、美团、搜狐等。
Nginx是免费开源的,同时Nginx也有收费的商业版本,商业版本提供了性能优化、宕机等紧急问题处理等技术支持和服务。

传统方式:
在这里插入图片描述
问题:tomcat连接数量有上限,超过之后其他人访问就要排队了,用户体验下降
改进:建立tomcat集群,采用Nginx进行反向代理。
在这里插入图片描述

Nginx作者

伊戈尔·赛索耶夫,俄罗斯,c语言开发的

正向代理和反向代理概念

反向代理(Reverse Proxy) 方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器;
正向代理 类似一个跳板机,代理访问外部资源。比如:我是一个用户,我访问不了某个网站,但是我能访问一个代理服务器,这个代理服务器,它能帮我访问我访问不了的网站,于是我先连上代理服务器,告诉他我需要访问的网站,代理服务器去取回来,返回给我。
总结:正向代理代理对象是客户端,反向代理代理对象是服务端

网站代理服务器查看

  • 淘宝:tengine
    在这里插入图片描述在这里插入图片描述
  • 网易:nginx
    在这里插入图片描述

Nginx环境搭建

下载

免费开源网站:http://nginx.org
下载Linux版本的nginx-1.14.2.tar.gz
方式一:直接在Linux输入命令 wget http://nginx.org/download/nginx-1.14.2.tar.gz
方式二:先下载下来,再上传到linx服务器的/home/soft/目录下

安装前准备

Nginx的安装需要确定Linux安装相关的几个库,否则配置和变异会出现错误;
执行下面命令:(如果存在则跳过,不存在就下载)

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

安装

  1. 解压下载下来的nginx文件
tar -zxvf nginx-1.14.2.tar.gz
  1. 切换至解压后的nginx主目录
cd nginx-1.14.2
  1. 安装到指定安装路径下
./configure --prefix=/user/local/nginx
  1. 编译
make
  1. 安装
make install

安装成功后,可以切换到/user/local/nginx目录下,查看nginx内容:

  • conf/nginx.conf :主配置文件
  • html/50x.html:错误页面
  • html/index.html:欢迎首页面
  • logs/:日志文件存放目录
  • sbin/nginx:启动命令

上述过程如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

启动

  1. 普通启动
    切换到nginx安装目录的sbin目录下,执行 ./nginx

  2. 配置文件启动
    sbin目录下执行./nginx -c /user/local/nginx/conf/nginx.conf -t
    或者直接执行/user/local/nginx/sbin/nginx -c /user/local/nginx/conf/nginx.conf -t
    其中 -c 指定配置文件,且配置文件路径必须是绝对路径
    其中 -t 是检查配置文件,可以知道配置文件是否正确

检测Nginx是否启动

  1. 查看进程:ps -ef | grep nginx
    在这里插入图片描述
    nginx体系结构由 master 进程和其 worker 进程组成
    master 进程读取配置文件,并维护 worker 进程,而 worker 进程则对请求进行实际处理
  2. 在浏览器输入 http://服务器![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128175150122.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzkxMzA0Mg==,size_16,color_FFFFFF,t_70) ip地址:80 访问Nginx服务器,出现界面(关闭防火墙)
    在这里插入图片描述

关闭

  1. 优雅关闭
    找出nginx进程号:ps -ef | grep nginx
    杀死master进程:kill -QUIT master-pid

  2. 快速关闭
    找出nginx进程号:ps -ef | grep nginx
    杀死master进程:kill -TERM master-pid

优雅关闭:命令执行后,nginx服务器不再接收请求,但要把之前的请求处理完毕之后再关闭,可能需要一段时间。
快速关闭:命令执行后,nginx服务器不管请求是否处理完成,直接关闭,比较暴力,快速快。
使用kill -9 pid 只能杀死一个pid进程,比如杀死master进程,但worker进程还在,所以就不要用 -9 了。

重启

执行命令 nginx -s reload,包含关闭和启动两个操作。

Nginx核心配置文件说明

Nginx核心配置文件在Nginx安装目录/user/local/nginx/conf目录下,名为nginx.conf。

Nginx核心配置文件主要由三部构成:

  1. 基础配置
    在这里插入图片描述
  2. events配置
    worker_connections最大65535
    nginx并发量=worker_processes x worker_connections
    在这里插入图片描述
  3. http配置
    在这里插入图片描述
    一个http里面可能有多个server,保证多个server的端口号和服务名不完全一样即可:
    在这里插入图片描述

Nginx主要功能

1、静态网站部署

Nginx 是一个 HTTP 的 Web 服务器,可以将服务器上的静态文件(如HTML、图片等)通过 HTTP 协议返回给浏览器客户端。

  1. 在服务器 /opt/www/ace/ 目录下部署静态资源 login.html
  2. 修改nginx核心配置文件,位于/user/local/nginx/conf/nginx.conf
    在这里插入图片描述
    注意:root 的值(/opt/www)对应 /ace 中 / 的值,所以,当请求的 url 为 /ace时,请求资源路径为 /opt/www/ace
  3. 启动nginx,浏览器访问:http://服务器ip地址:80/ace

2、负载均衡

负载均衡概述

网站创立初期,一般使用单机对外提供集中式服务。随着业务量增大,一台服务器不够用,此时就回把多台机器组成一个集群提供对外服务,但是,我们的网站对外提供的访问入口通常只有一个,比如 www.web.com。那么当用户在浏览器上输入www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情。

负载均衡通常是指将请求“均匀”分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀。

负载均衡实现方式
  1. 硬件负载均衡
    比如 F5、深信服、Array 等
    优点:有厂商专业的技术服务团队提供支持,性能稳定
    缺点:费用昂贵,对于规模小的网络应用成本高
  2. 软件负载均衡
    比如 Nginx、LVS、HAProxy
    优点:免费开源、成本低廉
  3. Nginx负载均衡
    Nginx通过在nginx.conf文件进行配置,即可实现负载均衡(默认轮询策略)
    在这里插入图片描述
    upstream是配置nginx与后端服务器负载均衡非常重要的一个模块,并且它还能对后端的服务器的健康状态进行检查,若后端服务器中的一台发生故障,则前端的请求不会转发到该故障机器。
Nginx负载均衡策略
  1. 轮询(默认)
upstream backserver{
	server 192.168.0.1:80;
	server 192.168.0.2:80;
}	

注意:这里的轮询并不是每个请求轮流分配到不同的后端服务器,与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景。如果后端服务器down掉,将自动提出

  1. 权重
upstream backserver{
	server 192.168.0.1:80 weight=5;
	server 192.168.0.2:80 weight=2;
}	

每个请求按一定比例分发到不同的后端服务器,weight 值越大访问的比例越大,用于后端服务器性能不均匀的情况。
weight值5和2,代表服务器192.168.0.1处理5个请求的时间和服务器192.168.0.2处理2个请求的时间是一样的。

  1. ip_hash
    算法:hash(“192.168.0.1”)%2=0,1
upstream backserver{
	ip_hash;
	server 192.168.0.1:80 weight=5;
	server 192.168.0.2:80 weight=2;
}	

ip_hash也叫做IP绑定,每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session丢失问题。但可能会导致某台服务器压力过大。

  1. 最少连接
upstream backserver{
	least_conn;
	server 192.168.0.1:80 weight=5;
	server 192.168.0.2:80 weight=2;
}	

web请求会被转发到连接数量最少的服务器上。

负载均衡其他配置
  • 配置1:
upstream backserver{
	server 192.168.0.1:80;
	# 其他所有的非backup机器down的时候,才会请求backup机器。
	server 192.168.0.2:80 backup;
}	
  • 配置2:
upstream backserver{
	server 192.168.0.1:80;
	# down表示当前server是down的状态,不参与负载均衡。
	server 192.168.0.2:80 down;
}	

一般在项目升级的时候,可以先对backup服务器升级(用户访问不到),然后取消其backup状态,并设置其他服务器为down,再升级其他的服务器,升级完毕取消down的状态即可。然后对Nginx重新reload,reload不会影响用户的访问,或者可以给一个提示页面,系统正在升级。

3、静态代理

把所有静态资源的访问改为访问nginx,而不是访问tomcat,这种方式叫静态代理。因为nginx更擅长静态资源的处理,性能更好,效率更高

所以在实际应用中,我们将静态资源比如图片、css、html、js等交给nginx处理,而不是由tomcat处理。
在这里插入图片描述

静态代理实现方式

方式一、在 nginx.conf 的 location 中配置静态资源的后缀
例如:当访问静态资源,则从 linux 服务器 /opt/static 目录下获取

location  ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${
	root /opt/static;
}

说明:

  • 表示正则匹配,也就是说后面的内容可以是正则表达式匹配
  • 第一个 . 表示任意字符
  • * 表示一个或者多个字符
  • \.是转义字符,是后面这个点的转义字符
  • 表示或者
  • $ 表示结尾

整个配置表示以 .js/css/html…为后缀结尾的文件都由nginx处理,返回静态资源的目录为/opt/static,要注意目录权限问题,如果权限不足,就给目录赋予权限;否则会出现403错误 chmod 755

方式二、在 nginx.conf 的 location 中配置静态资源所在目录实现
例如:当访问静态资源,则从 linux 服务器 /opt/static 目录下获取

location  ~ .*/(js|css|img|images)${
	root  /opt/static;
}

整个配置表示访问路径 xxx/css、xxx/js、xxx/img、xxx/images 时由nginx处理,返回静态资源的目录为/opt/static。

4、动静分离

静态资源由nginx处理
动态资源由tomcat处理
架构图如下:
在这里插入图片描述
中间负责负载均衡的Nginx的配置:
在这里插入图片描述
在这里插入图片描述
右下角负责静态资源代理的Nginx的配置:
在这里插入图片描述

5、虚拟主机

虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。

Nginx提供虚拟主机这个功能,就是为了让我们不需要安装多个Nginx,就可以运行多个域名不同的网站。

Nginx下,一个server标签就是一个虚拟主机。nginx的虚拟主机就是通过nginx.conf中server节点指定的,想要设置多个虚拟主机,配置多个server节点即可。

例如:www.meituan.com 切换城市,可以看到不同的城市地址不一样(二级域名)
如果一个公司有多个二级域名,没有必要为每个二级域名都提供一台Nginx服务器,就可以使用虚拟主机技术,在一台ngnix服务器上,模拟多个虚拟服务器。

配置虚拟主机方式

方式一、基于端口的虚拟主机(了解)

基于端口的虚拟主机配置,使用端口来区分。由于一般我们不写端口号,这个一般就不用。

server{
	listen   8080;
	server_name   www.myweb.com;
	location   /myweb{
		proxy_pass   http://www.myweb1.com;
	}
}
server{
	listen   8081;
	server_name   www.myweb.com;
	location   /myweb{
		proxy_pass   http://www.myweb2.com;
	}
}

方式二、基于域名的虚拟主机(掌握)

基于域名的虚拟主机配置,使用域名来区分。常用方式。

server{
	listen   80;
	server_name   www.myweb1.com;
	location   /myweb{
		proxy_pass   http://www.myweb1.com;
	}
}
server{
	listen   80;
	server_name   www.myweb2.com;
	location   /myweb{
		proxy_pass   http://www.myweb2.com;
	}
}

需要修改本地hosts文件:

192.168.21.1  www.myweb1.com
192.168.21.1  www.myweb2.com

架构图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值