【Nginx】基础

devtools/2024/12/23 15:33:36/

文章目录

  • 代理
    • 正向代理
    • 反向代理
  • 负载均衡
  • Nginx
    • 安装
    • Http
    • 反向代理
    • 负载均衡

代理

概念:

计算机中的一种概念,一般指代码设计方式,如AOP动态代理,或者物理层访问方式,如代理服务器

AOP的原理是动态代理,通过对目标类的代理,完成功能代码的织入。

  • 静态代理,可在编译阶段对目标类织入增强代码;代码实现
    • 典型有JDK静态代理和AspectJ
  • 动态代理,在程序运行过程中,动态地为目标类织入增强代码;反射实现
    • 典型有JDK动态代理和CGLib

代理服务器目的:

  • 隐藏访问者身份,伪装请求
  • 访问不能够访问的地址或服务器

正向代理

概念:

举例:小明妈妈告诉小明,你去村东头第一家小卖店买一瓶 酱油,买完回来给妈妈了。小明非常听妈妈的话,绝不去村东头第二家。

对于小明这个代理来说就是正向代理,也就是说发起者(小明妈妈) 知道代理者(小明)的目的地在哪里。

应用:

  1. 翻墙

    国内访问国外的google是访问失败的,因为有防火墙就给你拦截下来了,那我想访问国外的google网站就需要翻墙,

    GFW防火墙策略 并不是说所有国外的网站都拦截,只是拦截一些热点网站,所以翻墙者可以在国外租一台服务器A,

    这个国外的服务器A在国内是可以直接访问的,然后翻墙者就可以通知服务器A来帮我访问google。

    这个服务器A就属于正向代理,对于发起者知道这个代理服务器A要访问的目的地网站是哪里。

    image-20230201142251754

反向代理

概念:

举例:小明妈妈告诉小明,你去给我买瓶酱油,去哪儿买我不管,小卖店有很多,村东头,村西头的,村北头的。

妈妈是不知道小明去哪儿买的。

对于小明这个代理来说就是反向代理 不知道代理者(小明)的目的地在哪里。

**作用:**安全,防止使用者直接访问服务器,对于使用者并不知道访问的是哪一个服务器

应用:

  1. 网关

    所有请求我们都是通过网关,所有请求都通过网关,我们根据服务名请求就可以,就可以请求到服务,

    至于网关请求的是指定服务的哪个集群,我们是不知道的。

    也就是说访问者并不知道代理者 (网关) 要访问的目的地在哪里。

    提到反向代理就必须提到负载均衡, 当你用到反向代理技术就一定会用到负载均衡。
    http://192.168.1.191:9999/collection/find

    [外链图片转存中…(img-P5AIvdzz-1734851470610)]

[外链图片转存中…(img-EJNhWhCO-1734851470611)]

负载均衡

概念:

负载均衡*(Load Balance)*其意思就是分摊到多个操作单元上进行执行,

例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

负载均衡策略:轮询(Round Robin)策略

所有请求都通过网关,当并发量达到一定量级的时候,网关也需要做集群,网关的负载均衡谁去做呢?

Nginx

安装

  1. 下载:

    官网

    wget http://nginx.org/download/nginx-1.20.2.tar.gz
    
  2. 解压并创建文件夹

    tar -zxvf nginx-1.20.2.tar.gz
    
    mkdir /usr/local/nginx
    
  3. 安装C编译器

    yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
    
  4. 初始化配置

    nginx-1.20.2>  ./configure --prefix=/usr/local/nginx
    
  5. 编译和安装

    make & make install
    
  6. 启动nginx

    cd sbin
    
    ./nginx             # ./nginx -s reload # 重启服务
    
    http://192.168.56.3/
    

Http

Nginx本身也是一个静态资源的服务,当只有静态资源的时候,就可以使用Nginx来做服务器

/usr/local/nginx/conf/nginx.conf
location / {    root   html;   # http://192.168.56.3/index.html  代表跟目录是html文件夹index  index.html index.htm; # 默认访问的主页是index.html}# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}

反向代理

案例演示:

使用nginx访问不同的服务器,两个网站,不同服务器

[外链图片转存中…(img-jy6I3zLE-1734851470611)]

  1. 修改本机hosts配置文件

    vim /etc/hosts
    
    192.168.56.3  a.codingfuture.com    # 192.168.56.3 为部署nginx服务器操作系统的ip地址
    192.168.56.3  b.codingfuture.com
    
  2. 修改nginxnginx.conf配置文件

    vim conf/nginx.conf
    
        server {listen       80;server_name  a.codingfuture.com;location / {proxy_pass  http://192.168.18.235:8080/;index  index.html index.htm;}}server {listen       80;server_name  b.codingfuture.com;location / {proxy_pass  http://192.168.18.235:8088/;index  index.html index.htm;}}
    
  3. 重启nginx服务

    sbin/nginx -s reload
    
  4. 访问

    http://a.codingfuture.com/test
    

负载均衡

Tomcat的QPS在3000左右,为了提高并发量,使用nginx做负载均衡配置,一个网站,俩个服务器,做集群,高可用。

向配置文件中添加如下配置

    upstream a-server {server  192.168.18.235:8080     weight=2;server  192.168.18.235:8088;}server {listen       80;server_name  a.codingfuture.com;location / {proxy_pass  http://a-server;index  index.html index.htm;}}

http://www.ppmy.cn/devtools/144726.html

相关文章

《Java编程入门官方教程》第八章练习答案

【练习8-1(CharQ.java、IQDemo.java)】创建队列接口 为在实际中了解接口的强大功能,下面看一个实际例子。在以前的章节中,使用过一个名为Queue的类,该类实现了一个简单的固定大小的字符队列。然而,有许多方法可以实现一个队列。例…

爬虫代码中如何处理异常?

在编写爬虫代码时,处理异常是非常重要的一步,因为它可以帮助你的程序更加健壮,能够应对网络请求失败、解析错误等问题。以下是一些常见的异常处理方法: 1. 网络请求异常 使用requests库时,可能会遇到网络连接问题&am…

GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)

GA-BP分类神经网络的用途介绍 源代码 什么是 GA-BP 分类神经网络? GA-BP 分类神经网络结合了遗传算法(Genetic Algorithm,简称 GA)和反向传播算法(Backpropagation,简称 BP)来优化神经网络的…

【专题】操作系统期末复习资料

一、绪论 (★ ★)操作系统基本概念:操作系统的功能,特征,层次结构。 操作系统的地位。 操作系统作为裸机和应用的中间层; 提供资源管理功能和方便用户的各种服务功能; 将裸机改造成功能更强、…

数据结构初阶---二叉树

一、二叉树链式结构的实现 二叉树的接口实现一般涉及到函数的递归,这是因为二叉树包含根、左子树、右子树三部分,而子树又有与之对应的根、左子树、右子树,符合递归的特征。 1.二叉树的遍历 二叉树的遍历有4种形式:前序遍历、中…

node.js的简单示例

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,用于方便地构建快速、可扩展的网络应用。下面是一个简单的Node.js示例,它创建了一个简单的HTTP服务器,当访问服务器时,它会响应“Hello World” // 引入Node.js的HTTP模块…

智慧社区系统源码社区服务软件家政跑腿月嫂保洁维修小程序

应用场景 社区服务软件在现代社区生活中扮演着至关重要的角色,其应用场景涵盖了居民生活的方方面面,主要包括以下几个方面: 家政与生活服务: 家电维修与家庭保洁:居民可以通过软件预约专业的家电维修和家庭保洁服务&a…

JVM的垃圾回收机制

JVM的内存模型: 1.7前:分为年轻代、老年代和永久代 年轻代:分为了三部分,Eden区和两个大小严格相同的Survivor区(默认的大小分配是8:1:1),其中,Survivor区间…