【基础篇】nginx代理、动静分离、路径重写、高可用以及https配置

news2024/11/13 16:10:52

目录

正向代理

反向代理

负载均衡

负载均衡的策略

动静分离

alias与root 

UrlRewrite(资源路径重写)

防盗链配置  

高可用配置

Https证书配置

安装BBS(开源界的鼻祖)


正向代理

用户知道nginx服务器的存在,与nginx服务器是一伙的。例如:公司内的电脑要通过代理服务器(nginx)连接外网

反向代理

用户不知道nginx的存在,nginx是与服务端一伙的。

有性能瓶颈,因为所有的数据都经过Nginx,所以Nginx服务器的性能至关重要

负载均衡

worker_processes  1;



events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;



    sendfile        on;

    keepalive_timeout  65;

    upstream httpsd {
	server 192.168.23.101:80;
	server 192.168.23.102:80;
    }
    server {
        listen       80;
        server_name  localhost;


        location / {
	
	        proxy_pass http://httpsd;

        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }


    }

}

 

负载均衡的策略

轮询
默认情况下使用轮询方式,逐一转发,这种方式适用于无状态请求。
weight( 权重 )
指定轮询几率, weight 和访问比率成正比,用于后端服务器性能不均的情况
upstream httpd {
server 127.0.0.1:8050 weight=10 down;
server 127.0.0.1:8060 weight=1;
server 127.0.0.1:8060 weight=1 backup;
}
  • down:表示当前的server暂时不参与负载
  • weight:默认为1.weight越大,负载的权重就越大。
  • backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。
ip_hash
根据客户端的 ip 地址转发同一台服务器,可以保持回话。
least_conn
最少连接访问
url_hash
根据用户访问的 url 定向转发请求
fair
根据后端服务器响应时间转发请求

动静分离

现在有一台tomcat,一台nginx反向代理tomcat,对于静态资源类型访问通常是比较频繁的,因此将静态资源直接放在nginx服务器上,可以使访问速度快上许多

增加每一个 location
location /css {
    root /usr/local/nginx/static;
    index index.html index.htm;
}
location /images {
    root /usr/local/nginx/static;
    index index.html index.htm;
}
location /js {
    root /usr/local/nginx/static;
    index index.html index.htm;
}

这里也可以使用正则表达式进行匹配,这样子只需要写一个location

location 前缀
  • / 通用匹配,任何请求都会匹配到。
  • = 精准匹配,不是以指定模式开头
  • ~ 正则匹配,区分大小写
  • ~* 正则匹配,不区分大小写
  • ^~ 非正则匹配,匹配以指定模式开头的location  
location ~*/(css|img|js) {
    root /usr/local/nginx/static;
    index index.html index.htm;
}

location 匹配顺序
  • 多个正则location直接按书写顺序匹配,成功后就不会继续往后面匹配
  • 普通(非正则)location会一直往下,直到找到匹配度最高的(最大前缀匹配)
  • 当普通location与正则location同时存在,如果正则匹配成功,则不会再执行普通匹配
  • 所有类型location存在时,“=”匹配 > “^~”匹配 > 正则匹配 > 普通(最大前缀匹配)

aliasroot 

location /css {
    alias /usr/local/nginx/static/css;
    index index.html index.htm;
}
root 用来设置根目录,而 alias 在接受请求的时候在路径上不会加上 location
1 alias 指定的目录是准确的,即 location 匹配访问的 path 目录下的文件直接是在 alias 目录下查找的;
2 root 指定的目录是location 匹配访问的 path 目录的上一级目录 , 这个 path 目录一定要是真实存在 root 指定目录下的;
3 )使用alias标签的目录块中不能使用 rewrite break (具体原因不明);另外, alias 指定的目录后面必须要加上 "/" 符号!!
4 alias 虚拟目录配置中, location 匹配的 path 目录如果后面不带 "/" ,那么访问的 url 地址中这个 path 目录后面加不加"/" 不影响访问,访问时它会自动加上 "/" ; 但是如果 location 匹配的 path 目录后面加上 "/" ,那么访问的 url 地址中这个path 目录必须要加上 "/" ,访问时它不会自动加上 "/" 。如果不加上 "/" ,访问就会失败!
5 root 目录配置中,location 匹配的 path 目录后面带不带 "/" ,都不会影响访问。

UrlRewrite(资源路径重写)

rewrite 是实现 URL 重写的关键指令,根据 regex ( 正则表达式 ) 部分内容,
重定向到 replacement ,结尾是 flag 标记。
rewrite <regex> <replacement> [flag];
关键字   正则          替代内容      flag 标记
关键字:其中关键字 error_log 不能改变 正则: perl 兼容正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成 replacement
flag 标记: rewrite 支持的 flag 标记
rewrite 参数的标签段位置:
server,location,if
flag 标记说明:
  • last #本条规则匹配完成后,继续向下匹配新的location URI规则
  • break #本条规则匹配完成即终止,不再匹配后面的任何规则
  • redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
  • permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

实例          

rewrite ^/([0-9]+).html$ /index.jsp?pageNum=$1 break;

访问:http://192.168.23.100/3.html

真实的访问uri是:http://192.168.23.100/index.jsp?pageNum=3 

防盗链配置  

valid_referers none | blocked | server_names | strings ....;
  • none, 检测 Referer 头域不存在的情况。
  • blocked,检测 Referer 头域的值被防火墙或者代理服务器删除或伪装的情况。这种情况该头域的值不以 “http://” “https://” 开头。
  • server_names ,设置一个或多个 URL ,检测 Referer 头域的值是否是这些 URL 中的某一个。
在需要防盗链的 location 中配置
valid_referers 192.168.44.101;
if ($invalid_referer) {
    return 403;
}

使用 curl 测试
curl -I http://192.168.44.101/img/logo.png
带引用
curl -e "http://baidu.com" -I http://192.168.44.101/img/logo.png

高可用配置

使用keepalived维持nginx集群的高可用是比较简单的一种方式,通过安装keepalived并配置keepalived.conf,使得客户端访问一个虚拟ip,当主机nginx挂掉后,从机也能顶上去

安装方式一、编译安装
下载地址
https://www.keepalived.org/download.html#
使用 ./configure 编译安装
如遇报错提示
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!
安装依赖
yum install openssl-devel
安装方式二、yum安装
yum install keepalived
配置
使用 yum 安装后配置文件在
/etc/keepalived/keepalived.conf
最小配置
第一台机器
! Configuration File for keepalived

global_defs {

   router_id lb100
}

vrrp_instance atguigu {
    state MASTER  # 备份服务器上这里写的是BACKUP
    interface ens33  # 网卡的名称
    virtual_router_id 51  # 主备机的virtual_router_id必须相同
    priority 100   # 主备机取不同的优先级,主机值较大,备份机值较小
    advert_int 1  # 隔多久发一次心跳
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.23.200
    }
}

第二台机器

! Configuration File for keepalived
global_defs {
    router_id lb110
}
vrrp_instance atguigu {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.44.200
    }
}
启动服务
systemctl start keepalived 

 

此时在第一台机器上通过ip addr可以看到ens33下有一个虚拟IP 192.168.44.200,第二台机器则没有。把第一台机器关机模拟nginx下线后,第二台机器下也会出现虚拟IP了 。

hadoop100

hadoop101 

 手动关闭Hadoop100的nginx服务和keepalived服务

此时hadoop100

hadoop101

Https证书配置

不安全的http协议

采用对称加密算法(凯撒算法),即客户端和服务器各自有特定的不会变化的钥匙进行加密和解密,灵活性低且不安全

openssl
openssl 包含: SSL 协议库、应用程序以及密码算法库
将不安全的http转化为安全的https
将新购买的域名映射到新购买的主机上

 通过域名访问时显示的是不安全的连接

此时通过https://域名的方式请求会发现网站拒绝访问

 首先申请SSL证书,这里我们选择阿里云

通过签发后下载nginx的证书

 将证书放到nginx的conf目录下,在nginx.conf目录中加入配置,证书会自动在conf目录下查找

  server {
    listen 443 ssl;
    server_name localhost;

    ssl_certificate pem文件的名字;
    ssl_certificate_key key文件的名字;
  }

 重启nginx.service服务,通过https://域名访问,此时已经显示网站安全

安装BBS(开源界的鼻祖)

将安装包放到html目录下

 在html目录下通过unzip Discuz_X3.4_SC_UTF8_20220131.zip解压

然后通过域名访问bbs/install进行安装即可 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/512041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第五十五章 Unity 视频播放

使用视频播放器组件(Video Player)可将视频文件附加到游戏对象&#xff0c;然后在运行时在游戏对象的纹理上播放。首先&#xff0c;我们需要了解视频文件。视频文件的典型文件扩展名包括 .mp4、.mov、.webm 和 .wmv。可将许多不同的视频文件格式导入 Unity 中。Unity 将导入的视…

【Linux】编译器gcc/g++的使用

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;Linux的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录 前言一、gcc/g的介绍二、程序的翻…

基于Vue CLI搭建vue3项目

前言 使用vue官方的脚手架进行搭建Vue CLI 注意&#xff1a;create-vue是基于Vite搭建项目&#xff0c;今天我们还是基于webpack搭建使用vue create 项目名称这个命令 一、步骤 1、 使用默认配置项还是自定义配置 这里我选择自定义 2、 选择需要配置的选项 根据个人进行…

ChatGPT不会很快接管人类工作,AI也不会免费打工

ChatGPT 等大模型的相继发布&#xff0c;让很多人倍感压力&#xff0c;害怕 AI 会很快接管他们的工作。对此&#xff0c;OpenAI 也曾发表过一项研究&#xff0c;表明 ChatGPT 的影响涵盖所有收入阶层&#xff0c;且高收入工作可能面临更大的风险。事实到底如何呢&#xff1f; …

IT知识百科:什么是下一代防火墙和IPS?

引言 随着网络攻击的日益增多&#xff0c;防火墙和入侵防御系统&#xff08;Intrusion Prevention System, IPS&#xff09;已成为企业网络安全的必备设备。然而&#xff0c;传统的防火墙和IPS已经无法满足复杂多变的网络安全威胁&#xff0c;因此&#xff0c;下一代防火墙和I…

Java集合(底层设计与实现)

Java集合&#xff08;底层设计与实现&#xff09; 集合体系 List接口 基本介绍 元素有序&#xff08;即添加顺序和取出顺序一致&#xff09;、且可重复支持索引有下标&#xff0c;下标对应元素在容器中的位置 ArrayList 基本介绍&#xff1a;底层由数组实现&#xff1b;在…

软考 软件设计师数据结构二笔记

查找基本概念 顺序查找 折半查找&#xff08;二分查找顺序存储 &#xff09; 查找一个数据先给他折中&#xff0c;看看要查找的是不是大于中间值如果大于前面的就不用查找了 l和r指向对应下标 二分查找补充 上图描述如何构造这般查找判定树&#xff0c;一般都是下取整 …

PDF怎么转Word?简单几步轻松操作

PDF格式是目前最为流行的电子文档格式之一。但是&#xff0c;当我们需要编辑或修改PDF文件时&#xff0c;通常需要将其转换为Word文档格式。在本文中&#xff0c;我们将介绍如何将PDF文件转换为Word文档&#xff0c;并且列举PDF和Word文档操作上的差异。 PDF转Word文档操作方法…

19 树表的查找

文章目录 二叉排序树(BST)查找操作二叉排序树的存储结构查找实现查找算法分析二叉排序树的平均查找长度 插入操作删除操作代码实现 平衡二叉树&#xff08;AVL&#xff09;插入&旋转操作插入操作四种旋转情况代码实现 删除操作查找操作 介绍 树表查找是一种在树形数据结构中…

非法捕捞识别预警系统 yolov7

非法捕捞识别预警系统通过yolov7网络模型AI视频分析技术&#xff0c;非法捕捞识别预警系统模型算法能够对河道湖泊画面场景中出现的非法捕捞行为进行7*24小时不间断智能检测识别实时告警通知相关人员及时处理。Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测&#xff…

应用网关Nginx+Https证书+内网穿透+图片切割水印+网关登录

一、开源项目简介 Apiumc Gateway 它一个工具等于 Nginx Https证书 内网穿透 图片切割水印 网关登录 Apiumc Gateway 是高性能的Web网关&#xff0c;它从底层Socket原始通信层开始&#xff0c;采用多线程、多任务模式从新构建Web服务&#xff0c;充分发挥当下多核的CPU的…

当代年轻人搞副业有多野?工资6000,兼职1W...

凌晨12:00&#xff0c;我被同做新媒体的闺蜜小冉震了出来。 这是投稿出去&#xff0c;第10086次没有回声。 那种无力感掐着我的脖子&#xff0c;感觉整个人要窒息了。 写稿&#xff0c;真的好难&#xff0c;我好想放弃。 可是&#xff0c;每月被花呗、信用卡、房租支配的恐惧却…

C++【模板进阶】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f383;操作环境&#xff1a; Visual Studio 2019 版本 16.11.17 文章目录 &#x1f307;前言&#x1f3d9;️正文1、非类型模板参数1.1、使用方法1.2、类型要求1.3、实际例子&#xff1a;arr…

详解:三子棋以及N子棋的实现

三子棋以及N子棋的实现 初始化棋盘打印棋盘玩家下棋电脑下棋判断输赢主函数的实现(test.c)game.c的实现game.h的实现 铁汁们~今天给大家分享一篇三子棋以及N子棋的实现&#xff0c;来吧&#xff0c;开造⛳️ 实现流程&#xff1a; 1.游戏不退出&#xff0c;继续玩下一把&#x…

ML之FE:基于波士顿房价数据集利用LightGBM算法进行模型预测然后通过3σ原则法(计算残差标准差)寻找测试集中的异常值/异常样本

ML之FE&#xff1a;基于波士顿房价数据集利用LightGBM算法进行模型预测然后通过3σ原则法(计算残差标准差)寻找测试集中的异常值/异常样本 目录 基于波士顿房价数据集利用LiR和LightGBM算法进行模型预测然后通过3σ原则法(计算残差标准差)寻找测试集中的异常值 # 1、定义数据…

软件架构复习笔记(张友生教材版本)

考纲(张友生版本软件架构 考试题型&#xff1a; 10*3单选 5*3简答题 5*3设计图&#xff08;含画图&#xff09; 10*2 论述题 10*2综合题 复习以课件为主&#xff0c;书为辅 第一章 (软件危机) &#xff1f; &#xff1f; 构造模型与实现 掌握软件结构体系核心模型 第二章 软件体…

K8s之Pod最小调度单元详解

文章目录 一、Pod概念1、Pod是什么&#xff1f;2、Pod网络共享实现方式3、Pod存储共享方式4、创建Pod整体流程 二、使用YAML文件定义Pod资源1、Pod资源清单YAML文件书写技巧1. YAML语法格式&#xff1a;2. 配置Linux tab缩进两个空格3. 使用kubectl explain帮助命令 2、创建Pod…

ChatGPT客服系统产品-利用chatgpt训练企业知识开发个性化客服系统

打造最前沿的AI智能客服系统&#xff0c;基于自有数据语料&#xff0c;充分运用ChatGPT的大模型自然语言生成能力&#xff0c;定制化客服系统为企业提供自主性的客服服务能力。 ChatGPT如何革新智能客服&#xff1f; 根据当前ChatGPT的使用情况&#xff0c;我们发现未来中短期内…

基于 DDR3 的串口传图帧缓存系统设计实现(fifo2mig_axi )

文章目录 前言一、接口转换模块设计二、fifo2mig_axi 模块二、接口转换模块仿真四、fifo2mig_axi_tb五、仿真展示 前言 结合串口接收模块和 tft 显示屏控制模块&#xff0c;设计一个基于 DDR3 的串口传图帧缓存系统。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面…

次世代烘焙 法线贴图 相关知识

一般将低模 高模的法线贴图实现大量细节模型画面的游戏称为次时代游戏。 次世代常用软件 低模&#xff1a;Maya、3Dmax、Topogun 。 中模&#xff1a;Maya、3Dmax 。 高模&#xff1a;Maya、3Dmax、Zbrush。 UV&#xff1a;Maya、Zbrush、Unfold3D、Uvlayout 。 烘焙&#x…