Nginx反向代理

1、nginx常用命令

  • 前提条件:必须进入到nginx目录中–>cd /urs/local/nginx/sbin

    查看版本号./nginx -v
    启动Nginx./nginx
    关闭Nginx./nginx -s stop
    重加载Nginx./nginx -s reload

2、Nginx配置文件

​ (1)文件所在位置:/urs/local/nginx/conf/ngonx.conf

​ (2)Nginx配置文件由三部分组成

第一部分:全局块

从配置文件开始的位置到events块都属于全局块,主要会设置一些影响Nginx服务器整体运行的配置指令,主要包括:

①配置运行Nginx服务器的用户(组)、允许生成的worker process数,进程PID、日志的存放路径和类型以及配置文件的引入等;

worker_processes  1; #Nginx处理并发服务的关键配置,worker_processes值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约

第二部分:events块

events块涉及的指令主要影响Nginx服务器与用户的网络连接,常用设置包括是否开启对多work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种驱动模型来处理连接请求,每个work process可以同时支持的最大连接数等。

每个work process最大连接数位1024

worker_connections  1024;

第三部分:Http块

注意:http 块也可以包括 http全局块、server 块

①http全局块:http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

②这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。 每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。 而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。

​ ①全局 server 块:最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。

​ ②:一个 server 块可以配置多个 location 块。这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

Nginx-反向代理

1、实现效果

​ (1)在浏览器中输入www.123.com,跳转到Linux系统Tomcat主页面中

2、准备工作

​ (1)安装Tomcat

​ (2)在Linux中并不是每个端口都会别开放

# --zone #作用域    --add-port=80/tcp #添加端口,格式为:端口/通讯协议    --permanent #永久生效,没有此参数重启后失效
firewall-cmd --zone=public --add-port=8080/tcp --permanent #开启端口
firewall-cmd --reload #重启防火墙
firewall-cmd --list-ports #查看所有开启的端口
systemctl status firewalld #查看防火墙是否开启
firewall-cmd --state  #查看防火墙状态,是否是running
firewall-cmd --reload #重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones     #列出支持的zone
firewall-cmd --get-services  #列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp #查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp                #临时开放ftp服务
firewall-cmd --add-service=ftp --permanent    #永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent #永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent    #永久添加80端口 
firewall-cmd --remove-port=80/tcp --permanent    #永久移除80端口 
iptables -L -n     #查看规则,这个命令是和iptables的相同的

3、访问过程分析

在这里插入图片描述

4、具体配置

第一步:在windows的hosts文件中添加

第二步:修改Nginx.conf配置文件

配置映射文件以及对应的服务器端口号,用户通过访问Nginx中配置的虚拟端口以及URL实现访问请求,从而使得真正的路径不被用户访问,降低服务器的访问压力

在这里插入图片描述

Nginx-负载均衡

1、实现效果

(1)浏览器中输入http://192.168.60.130/edu/a.html,实现负载均衡,平均在8080和8081端口中

2、准备工作

(1)准备两台Tomcat服务器,一台端口为8080,另一台为8081

(2)在两台Tomcat里面webapps目录中,创建名称为edu文件夹,文件夹中创建页面a.html,用于测试

3、配置负载均衡

(1)配置多台Tomcat服务器

(2)将server_name中的localhost改为虚拟机地址

(3)设置proxy_pass,指向两台服务器,使用轮询方式实现负载均衡

在这里插入图片描述

(4)通过浏览器访问即可–>http://192.168.60.130/edu/a.html,因为80端口是不需要在URL路径中输入即可访问的

Nginx-动静分离

1、什么是动静分离
在这里插入图片描述

2、配置文件—> /usr/local/Nginx/conf/Nginx.conf

在这里插入图片描述

3、测试

(1)浏览器中进行访问图片–》http://192.168.60.130:image/01.jpg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XRjisjEz-1651147399691)(C:\Users\Dell7591\AppData\Roaming\Typora\typora-user-images\image-20220424180648304.png)]

(2)浏览器中进行访问HTML文件–》http://192.168.60.130:static/s.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uLa3KujU-1651147399691)(C:\Users\Dell7591\AppData\Roaming\Typora\typora-user-images\image-20220424180802284.png)]

Nginx-高可用集群

演示:

在这里插入图片描述

1、俩台服务器,均安装Nginx,前提还需安装,可能在安装pcre的过程中,虚拟机中还缺少C++的编译环境

在这里插入图片描述

 tar -xvf pcre-8.37.tar.gz #解压pcre
 cd pcre-8.37/ #进入到pcre目录
 ./configure #
yum install -y gcc gcc-c++ #安装c++编译环境
./configure
make && make install #编译安装
pcre-config --version #查看pcre版本
 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel #安装openssl、zlib环境
 tar -xvf nginx-1.12.2.tar.gz  #解压nginx压缩包
cd nginx-1.12.2 #进入到nginx目录
./configure #执行nginx命令
make && make install #安装nginx
cd /usr/local/nginx/sbin #进入到nginx目录中
./nginx -s stop #停止nginx服务
./nginx #启动nginx
 yum install keepalived -y #安装Keepalived环境
rpm -q -a keepalived #查看keepalived是否安装成功
 systemctl start keepalived.service #启动keepalived服务

2、设置keepalived配置文件,该文件配置在keepalived文件中,默认通过yum命令下载的keepalived会在/etc/下生成keepalived文件夹,而配置文件keepalived也放在该文件夹下,脚本文件则防止在脚本中规定的目录下即可

-----------------------keepalived配置文件----------------------------
global_defs { 
  notification_email { 
	acassen@firewall.loc      
	failover@firewall.loc      
	sysadmin@firewall.loc 
	} 
	notification_email_from Alexandre.Cassen@firewall.loc    smtp_server 192.168.60.130 //主服务器地址
	smtp_connect_timeout 30 
	router_id LVS_DEVEL 
}

vrrp_script chk_http_port { 
	script "/usr/local/src/nginx_check.sh" 
	interval 2		#(检测脚本执行的间隔)
	weight 2 
}

vrrp_instance VI_1 { 
    state BACKUP	# 备份服务器上将 MASTER 改为 BACKUP 
	interface ens33  #网卡     
	virtual_router_id 51   # 主、备机的virtual_router_id必须相同
	priority 90   # 主、备机取不同的优先级,主机值较大,备份机值较小   
	advert_int 1  # 每隔一秒发送心跳值,查询服务器是否存活,如不存活,则换从服务器
	authentication { 
		auth_type PASS 
		auth_pass 1111
	}
	virtual_ipaddress {
		192.168.60.101 // VRRP H虚拟地址
	}
}
----------------------------脚本文件--------------------------------
    #!/bin/bash 
A=`ps -C nginx –no-header |wc -l` 
if [ $A -eq 0 ];then
      /usr/local/nginx/sbin/nginx  //规定存放位置
      sleep 2  //每两秒检查一次Nginx服务器是否存在
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then 
           killall keepalived
      fi
fi 

3、启动nginx、keepalived即可

4、通过浏览器访问虚拟IP

Nginx原理

1、原理:Nginx采用主从机制(Master&Worker)的方式实现,一个Master可以有多个Worker,Master是管理者,Worker是实际工作者,Worker采用争抢式的方式进行工作

2、一个Master和多个Worker的优点?

①优点:可以使用Nginx -s reload实现热部署,在热部署的时候,正在处理工作的Worker先处理完手头上的任务,然后再进行更新,不会造成Nginx宕机

②:每个Worker都是独立的进程,如果有其中一个Worker出现问题,其他Worker都是独立的,继续争抢任务,实现请求,并不会造成服务中断

3、设置多少个Worker合适?

Worker数和服务器的CPU数量相等最为适宜,如果CPU个数只有4个,却设置8个Worker,可能会造成性能上的影响

4、连接数Worker_Connection

①:发送请求,占用Worker几个连接数?—>2或者4个,解释:如果说请求访问静态资源,Worker接收到请求占用一个连接,处理请求之后,响应给客户端,又占用一个请求。另外;客户端同时需要访问静态资源又要访问Tomcat,这时候就会占用4个连接数

②:Nginx有一个Master,有四个Worker,每个Worker支持的最大连接数是1024,那么支持的最大并发数是多少?

​ A、普通的静态访问最大并发数是:Worker_Connection(连接数)*worker_process (Worker支持的最大连接数是1024)/ 2

​ B、如果是HTTP作为反向代理来说,最大的并发数应该是Worker_Connection(连接数)*worker_process (Worker支持的最大连接数是1024)/ 4

在这里插入图片描述

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx 反向代理是一种常用的服务器配置方法,它可以将客户端的请求转到后端的多个服务器上,并将响应返回给客户端。通过反向代理,可以实现负载均衡、缓存、安全性等功能。 要配置 Nginx 反向代理,你需要编辑 Nginx 的配置文件(通常是 `nginx.conf`),然后添加相应的配置项。 以下是一个简单的 Nginx 反向代理配置示例: ``` http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } ``` 在这个示例中,`upstream` 块定义了后端服务器的列表。`server` 块定义了监听的端口和域名,并在 `location` 块中配置了反向代理。 `proxy_pass` 指令将请求转发到 `http://backend`,其中 `backend` 是 `upstream` 块中定义的后端服务器列表。 `proxy_set_header` 指令用于设置转发请求时的请求头。在示例中,我们设置了 `Host` 和 `X-Real-IP` 请求头。 完成配置后,保存文件并重新加载 Nginx 配置。这样,Nginx 就会将客户端的请求转发到后端服务器,并将响应返回给客户端。 请注意,以上只是一个简单的示例,实际的配置可能因具体需求而有所不同。你可以根据实际情况进行配置,并参考 Nginx 官方文档获取更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值