由浅入深学习nginx

nginx(高性能的http和反向代理服务器)的优点:
(1)占有内存少
(2)并发能力强(支持5万个)
(3)专为性能优化而开发
nginx主要可以实现的功能有这么几个,反向代理,负载均衡和动静分离以及高可用这几个功能。

nginx文件配置的说明:

三部分组成
(1)全局块
#从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括
运行nginx服务器的用户,允许生成的worker process数,锦程PID存放路径,日志存放路径和类型以及
配置文件的引入

# 全局块
#user  nobody;


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

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

(2)events块

# 主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对work process下的
# 网络连接进行序列化,是否允许同事接收多个网络连接,选取哪种事件驱动模型来处理连接
# 请求,每个word process可以同时支持的最大连接数
events {
    worker_connections  1024;
}

(3)http块

反向代理

1.正向代理
在这里插入图片描述
2.反向代理
1.客户端不需要做任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端。此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器ip地址
在这里插入图片描述
(1)反向代理实例1
实现效果: 浏览器中输入www.123.com,通过nginx定位到192.168.17.129:80,然后再转发到127.0.0.1:8000,对外暴露的是192.168.17.129:80,域名www.123.com在windows的host文件进行配置。

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

    #access_log  logs/access.log  main;

    sendfile        on;

    #gzip  on;
    # sever和虚拟机有密切关系,包括全局sever块和location块
    server {
        # 监听的端口号是8080端口号
        listen       8080;
        # 监听的主机名称是localhost
        server_name  192.168.17.128;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        # 在访问192.168.17.128的时候会通过location给你进行转接
        location / {
            root   D:/vue3管理系统/admin/dist/;
            # 当访问到192.168.17.1288080的时候,就会给咱们转发到http://127.0.0.1:8080
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
       
        #\.php$相当于是个路径正则校验,当你访问的路径中有\.php$,然后做一些请求的跳转
        # 或者是相关的操作
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    }

}

(2)反向代理实例2
实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001
(1)访问http://127.0.0.1:9001/edu/的时候直接跳转到127.0.0.1:8081
(2)访问http://127.0…0.1:9001/vod/的时候直接跳转到127.0.0.1:8082

server {
       listen       9001;
       server_name  192.168.17.129;
    #    ~  这个符号表示咱们用的是正则校验,
    # 当路径中有edu,就给转发到http://localhost:8081
       location ~ /edu/ {
            proxy_pass http://localhost:8081;
       }
    #    当路径中有vod,就给转发到http://localhost:8002
       location ~ /vod/ {
            proxy_pass http://localhost:8002;
       }
}

负载均衡(也可以叫请求均衡)

#实现效果:(1)在浏览器地址栏中输入地址http://192.168.17.129/edu/a.html,负载均衡效果 平均8080和8081端口中

在这里插入图片描述

http {
    # 已进行负载均衡的ip列表
    # myserver是起的名字
    upstream myserver {
        # 分配策略
        # (1)轮询
        # 默认策略:每个请求按时间顺序注意分配到不同的后端服务器,服务器当季会自动剔除服务器

        #  (2)weight
        # weight代表权重,权重约个奥被分配的客户端越多
        server 192.168.17.128:8080 weight = 1;
        server 192.168.17.128:8180 weight = 1;
        # (3)ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个
        # 后端服务器,可以解决session的问题(第一次访问的是哪台服务器,以后就访问哪台服务器)

        # ip_hash
        # server 192.168.17.128:8080 ;
        # server 192.168.17.128:8180 ;

        # (4)fair第三方
        # 按照后端服务器的响应时间分配请求,响应时间端的优先分配

        # server 192.168.17.128:8080 ;
        # server 192.168.17.128:8180 ;
        # fair;
    }
    server {
        # 监听的端口号是8080端口号
        listen       8080;
        # 监听的主机名称是localhost
        server_name  192.168.17.128;
        # 在访问192.168.17.128的时候会通过location给你进行转接
        location / {
            root   html;
            # 当访问到192.168.17.1288080的时候,就会给咱们转发到					#http://127.0.0.1:8080	
            proxy_pass http://myserver;
            index  index.html index.htm;
        }

}

动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器解析,加快解析的进度,降低单个服务器的压力。
通过location指定不同的后缀名实现不同的请求转发。通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求与流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。我这里设置3d,表示在这三天之内访问这个url,发送一个请求,比对服务器该文件最后时间有没有变化,则不会从服务器抓取,返回状态码304.如有修改,则直接从服务器重新下载,返回状态码200+。


# 三部分组成
# (1)全局块
# 从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括
# 运行nginx服务器的用户,允许生成的worker process数,锦程PID存放路径,日志存放路径和类型以及
# 配置文件的引入


# (2)events块
# (3)http块


# 全局块
#user  nobody;


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

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;



# 主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对work process下的
# 网络连接进行序列化,是否允许同事接收多个网络连接,选取哪种事件驱动模型来处理连接
# 请求,每个word process可以同时支持的最大连接数
events {
    worker_connections  1024;
}

# 实现效果
# (1)在浏览器地址栏中输入地址http://192.168.17.129/edu/a.html,负载均衡效果
# 平均80808081端口中
# (


http {
    }
    server {
        # 监听的端口号是8080端口号
        listen       8080;
        # 监听的主机名称是localhost
        server_name  192.168.17.128;
        # 在访问192.168.17.128的时候会通过location给你进行转接
        location /www/ {
            root   /data/;
            index  index.html index.htm;
        }
        # 访问路径http://192.168.17.128/image/01.jpg
        location /image/ {
            root   /data/;
            autoindex on;
        }
}

高可用
在这里插入图片描述
如何实现:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
后台采用apache服务器下的cgi处理c语言做微信小程序后台逻辑的脚本映射。PC端的服务器和客户端都是基于c语言写的。采用mysql数据库进行用户数据和聊天记录的存储。.zip C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Realistic-er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值