nginx的n种用法(nginx安装+正向代理+反向代理+透明代理+负载均衡+静态服务器)

news2024/9/24 7:24:29

nginx的安装

一、安装依赖

# 一键安装四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

二、安装nginx

yum install nginx

三、检查是否安装成功

nginx -v

四、启动/停止nginx

/etc/init.d/nginx start
/etc/init.d/nginx stop

五、编辑配置文件

/etc/nginx/nginx.conf 

正向代理

正向代理:内网服务器主动去请求外网的服务的一种行为
正向:相同的或一致的方向;代理:自己做不了的事情或者自己不打算做的事情,委托或依靠别人来完成

客户端向目标服务器发起的请求,是由代理服务器代替它向目标主机发起,得到结果之后,通过代理服务器返回给客户端。
在这里插入图片描述

正向代理的配置

server {
    #指定DNS服务器IP地址  
    resolver 114.114.114.114;   
    #指定代理端口 (主动发起请求的内网服务器端口)   
    listen 8080;  
    location / {
        #设定代理服务器的协议和地址(固定不变)    
        proxy_pass http://$http_host$request_uri; 
    }  
} 

就可以做到内网中端口为8080的服务器主动请求到1.2.13.4的主机上,如在Linux下可以:

curl --proxy proxy_server:8080 http://www.taobao.com/

反向代理

反向代理:reverse proxy,是指用代理服务器来接受客户端发来的请求,然后将请求转发给内网中的上游服务器,上游服务器处理完之后,把结果通过nginx返回给客户端。
在这里插入图片描述
在这里插入图片描述

反向代理配置

server {
    #监听端口
    listen 80;
    #服务器名称,也就是客户端访问的域名地址(客户端向服务器发起请求时输入的域名)
    server_name  a.xxx.com;
    #nginx日志输出文件
    access_log  logs/nginx.access.log  main;
    #nginx错误日志输出文件
    error_log  logs/nginx.error.log;
    root   html;
    index  index.html index.htm index.php;
    location / {
        #被代理服务器的地址(代表源服务器的访问地址,也就是真正处理请求的服务器(localhost+端口号))
        proxy_pass  http://localhost:8081;
        #对发送给客户端的URL进行修改的操作
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
   }
}

透明代理

透明代理:也叫做简单代理,意思客户端向服务端发起请求时,请求会先到达透明代理服务器,代理服务器再把请求转交给真实的源服务器处理,也就是是客户端根本不知道有代理服务器的存在。

点类似于拦截器,如某些制度严格的公司里的办公电脑,无论我们用电脑做了什么事情,安全部门都能拦截我们对外发送的任何东西,这是因为电脑在对外发送时,实际上先经过网络上的一个透明的服务器,经过它的处理之后,才接着往外网走,而我们在网上冲浪时,根本没有感知到有拦截器拦截我们的数据和信息
在这里插入图片描述

有人说透明代理和反向代理有点像,都是由代理服务器先接受请求,再转发到源服务器。
其实本质上是有区别的,透明代理是客户端感知不到代理服务器的存在,而反向代理是客户端感知只有一个代理服务器的存在,因此他们一个是隐藏了自己,一个是隐藏了源服务器。
事实上,透明代理和正向代理才是相像的,都是由客户端主动发起请求,代理服务器处理;他们差异点在于:正向代理是代理服务器代替客户端请求,而透明代理是客户端在发起请求时,会先经过透明代理服务器,再达到服务端,在这过程中,客户端是感知不到这个代理服务器的。

负载均衡

负载均衡:将服务器接收到的请求按照规则分发的过程,称为负载均衡。负载均衡是反向代理的一种体现。
在这里插入图片描述

负载均衡的模式

①、轮询:每个请求按时间顺序逐一分配到不同的后端服务器,也是nginx的默认模式。轮询模式的配置很简单,只需要把服务器列表加入到upstream模块中即可。

# 负载中有三台服务器,当请求到达时,nginx按照时间顺序把请求分配给三台服务器处理
upstream serverList {
    server 1.2.3.4;
    server 1.2.3.5;
    server 1.2.3.6;
}

②、ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题

# 负载中有三台服务器,当请求到达时,nginx优先按照ip_hash的结果进行分配,也就是同一个IP的请求固定在某一台服务器上,其它则按时间顺序把请求分配给三台服务器处理
upstream serverList {
    ip_hash
    server 1.2.3.4;
    server 1.2.3.5;
    server 1.2.3.6;
}

③、url_hash:按访问url的hash结果来分配请求,相同的url固定转发到同一个后端服务器处理

upstream serverList {
    server 1.2.3.4;
    server 1.2.3.5;
    server 1.2.3.6;
    hash $request_uri; 
    hash_method crc32; 
}

④、fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream serverList {
    server 1.2.3.4;
    server 1.2.3.5;
    server 1.2.3.6;
    fair;
}

在每一种模式中,每一台服务器后面的可以携带的参数有:

  • down: 当前服务器暂不参与负载
  • weight: 权重,值越大,服务器的负载量越大
  • max_fails:允许请求失败的次数,默认为1
  • fail_timeout:max_fails次失败后暂停的时间
  • backup:备份机, 只有其它所有的非backup机器down或者忙时才会请求backup机器

如下面的配置是指:负载中有三台服务器,当请求到达时,nginx按时间顺序和权重把请求分配给三台服务器处理,例如有100个请求,有30%是服务器4处理,有50%的请求是服务器5处理,有20%的请求是服务器6处理

upstream serverList {
    server 1.2.3.4 weight=30;
    server 1.2.3.5 weight=50;
    server 1.2.3.6 weight=20;
}

如下面的配置是指:负载中有三台服务器,服务器4的失败超时时间为60s,服务器5暂不参与负载,服务器6只用作备份机

upstream serverList {
    server 1.2.3.4 fail_timeout=60s;
    server 1.2.3.5 down;
    server 1.2.3.6 backup;
}

下面是一个配置负载均衡的示例(只写了关键配置):
其中:

upstream:是负载的配置模块,serverList是名称,随便起

server_name:是客户端请求的域名地址

proxy_pass:是指向负载的列表的模块,如serverList

 upstream serverList {
    server 1.2.3.4 weight=30;
    server 1.2.3.5 down;
    server 1.2.3.6 backup;
}   

server {
    listen 80;
    server_name  www.xxx.com;
    root   html;
    index  index.html index.htm index.php;
    location / {
        proxy_pass  http://serverList;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
   }
}

静态服务器

静态服务器的配置如下,其中关键配置为:

  • root:直接静态项目的绝对路径的根目录。
  • server_name : 静态网站访问的域名地址。
server {
        listen       80;                                                         
        server_name  www.xxx.com;                                               
        client_max_body_size 1024M;
        location / {
               root   /var/www/xxx_static;
               index  index.html;
           }
    }

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

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

相关文章

【操作系统】线程的状态

目录 1.前言 2.状态列表 3.代码演示 1.前言 在线程中,有很多的状态。这些状态代表了线程目前所处的位置和情况,我们也可以通过这些状态,在以后的工作中,精准的定位到程序出现的问题。 2.状态列表 在Thread类所创建的对象中&a…

java 反射和注解1-反射详解

反射和注解本就是一家人,注解离不开反射,这里先将反射的写法,本文涉到的注解暂时可以不不用理解 1,创建一个类 public class ReflexUser {public String name;private String namePrivate;protected String nameProtected;Strin…

《数据结构、算法与应用C++语言描述》-代码实现散列表(线性探查与链式散列)

散列表 完整可编译运行代码:Github:Data-Structures-Algorithms-and-Applications/_22hash/ 定义 字典的另一种表示方法是散列(hashing)。它用一个散列函数(也称哈希函数)把字典的数对映射到一个散列表&#xff08…

2024春招必备软件测试八股文

1、什么是兼容性测试?兼容性测试侧重哪些方面? 参考答案: 兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。 兼容的类型,如果细分的话,有平台的兼容…

【科普知识】什么是步进电机?

德国百格拉公司于1973年发明了五相混合式步进电机及其驱动器,1993年又推出了性能更加优越的三相混合式步进电机。我国在80年代以前,一直是反应式步进电机占统治地位,混合式步进电机是80年代后期才开始发展。 步进电机是一种用电脉冲信号进行…

【ArcGIS Pro微课1000例】0035:栅格影像拼接(dem高程数据)

本实验讲解在ArcGIS Pro中,栅格数据的两种拼接(镶嵌)方法,适用于遥感影像、DOM、DEM、DSM等常见栅格数据。 文章目录 一、加载实验数据二、栅格拼接工具1. 镶嵌2. 镶嵌至新栅格三、注意事项四、拓展阅读一、加载实验数据 加载配套实验数据中的0035.rar中的两个dem数据,如…

C语言之strstr函数的使用和模拟实现

C语言之strstr函数的模拟实现 文章目录 C语言之strstr函数的模拟实现1. strstr函数的介绍2. strstr函数的使用3. strstr的模拟实现3.1 实现思路3.2 实现代码 1. strstr函数的介绍 函数声明如下: char * strstr ( const char * str1, const char * str2 ); strs…

Python---函数定义时缺省参数(参数默认值)

缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)。 def user_info(name, age, gender男):pr…

【腾讯云云上实验室-向量数据库】Tencent Cloud VectorDB为非结构化数据查询插上飞翔的翅膀——以企业知识库为例

前言 以前我曾疑惑,对于非结构化的内容,如一张图片或一段视频,如何实现搜索呢?图片或视频作为二进制文件,我们如何将其转化为可搜索的数据并存储起来,然后在搜索时将其还原呢? 后来我发现&…

【链表之练习题】

文章目录 翻转链表找到链表的中间节点返回倒数第k个节点合并两个有序链表判断链表是否回文注意 翻转链表 //反转链表//实质上是把每一个节点头插法,原本第一个节点变成最后一个节点public ListNode reverseList(){//链表为空if (head null){return null;}//链表只有一个节点if…

【腾讯云云上实验室】向量数据库与数据挖掘分析的黄金组合指南

前言: 在当今信息化时代,掌握对数据进行挖掘和分析的能力变得愈发关键。根据需求精准处理数据不仅仅是一项技能,更是对未来决策和操作的至关重要的支持。除了熟练运用适当的算法模型对大数据进行挖掘和分析外,合理高效存储和处理大…

文件批量重命名技巧:图片文件名太长怎么办?告别手动改名方法

在日常生活中,常常会遇到文件名过长导致的问题。尤其是在处理大量图片文件时,过长的文件名可能会使得文件管理变得混乱不堪。现在来看下云炫文件管理器如何批量重命名,让图片文件名变得更简洁,提高工作效率。 操作1、在云炫文件…

Nginx模块开发之http handler实现流量统计(2)

文章目录 一、概述二、Nginx handler模块开发2.1、代码实现2.2、编写config文件2.3、编译模块到Nginx源码中2.4、修改conf文件2.5、执行效果 总结 一、概述 上一篇【Nginx模块开发之http handler实现流量统计(1)】使用数组在单进程实现了IP的流量统计&a…

698. 划分为k个相等的子集

698. 划分为k个相等的子集 Java:回溯 class Solution {boolean[] used;int target;private boolean backtracking(int[] nums, int k, int sum, int start) {if (k 0) {return true; // 找到:立即中断栈!并返回值}if (sum target) { // 构…

中国企业500强的排名也在不断变化。面对不确定性的挑战,企业如何应对?

随着全球经济的不断发展和变化,中国企业500强的排名也在不断变化。面对不确定性的挑战,企业如何应对?在本文中,挖数据平台将提供数据源探讨中国企业500强在应对不确定性方面的突围与变革。 一、数据挖掘与分析 从2006年到2023年&…

【电子通识】为什么说做产品不是简单的将不同的技术进行搭积木?

很多人说做产品的硬件工程师,其实就是将专项技术工程师已经调好的模块进行拼接。类似于小孩将积木搭成一个房子的形状,虽然不同人搭的房子风格迥异,但所使用的原材料却都是一样的。 首先我并不同意这种看法,原因是产品工程师是需要…

搞笑的客服日常,今天遇到的晒白客服,你遇到过吗?

大家看看这个 https://blog.csdn.net/a871923942/article/details/129778391?utm_mediumdistribute.pc_feed_404.none-task-blog-2 今天遇到傻逼审核 开头第一句就使用快捷话术 客服感觉自己发错了 然后就撤回消息 第二次继续发话术,说违规,审核不通过…

STM32入门--CAN

目录 一、bxCan简介 二、bxCAN总体描述 2.1概述 2.2CAN框图 三、bxCA的工作模式 3.1初始化模式 3.2正常模式 3.3睡眠模式(低功耗) 四、测试模式 4.1静默模式 4.2环回模式 五、bxCAN功能描述 5.1 发送处理 ​编辑 5.2接收管理 5.2.1 标识符过…

基于食肉植物算法优化概率神经网络PNN的分类预测 - 附代码

基于食肉植物算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于食肉植物算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于食肉植物优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

CAN实验

CAN 寄存器 HAL库函数 代码 #include "./BSP/CAN/can.h"CAN_HandleTypeDef g_can1_handle; CAN_TxHeaderTypeDef g_can1_txheader; CAN_RxHeaderTypeDef g_can1_rxheader;/* STM32F103 TS1 8 TS2 7 BRP 3 波特率:36000 / [(9 8 1) * 4] 500Kbps …