Nginx 运维

本文介绍了Nginx的运维知识,包括正向代理、反向代理的概念和区别,Nginx作为轻量级、高性能的web服务器的特点,与Apache的对比,以及Nginx的主要应用场景。此外,还探讨了Nginx的高性能原因,如非阻塞I/O、事件驱动机制和Master/Worker并发工作模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
个人备忘

正向代理

个人理解,代理服务器存在客户端。

1.客户端访问不了服务器。
2.代理服务器可以访问业务服务器。
3.我们通过访问 “代理服务器”访问业务服务器。

总结 :代理服务器跟客户端在同一网络区域。

反向代理

个人理解,代理服务器在服务端。

1.客户端通过访问“代理服务器”。
2.代理服务器分析客户的请求,映射到不同业务服务器上。

总结 :代理服务器 与 业务服务器处在统一网络区域。

Nginx简介 :

轻量级,高性能的web服务器(IO很强,单机几万并发量,配置忘了–)。

Webserver 的老大哥是 : Apache Http Server , nginx 。

Nginx 和 apache 的对比

Nginx : 轻量级,配置简单方便,高并发,高静态处理能力 。

Apache : php 支持的更好,插件更多,高动态处理能力。

Nginx主要作静态和反向代理服务器,处理前端静态请求。

Apache 用作动态代理服务器,处理后端动态请求。

Nginx配置详解

(1)配置tomcat负载
(2)配置静态资源访问路径

//说明:server我们是可以配置多个的

//样例
server {
        listen       80;
        server_name  www.shuuy.com;

        location / {
            proxy_pass http://47.2.6.20:443/;
        }
    }

    server {
        listen       80;
        server_name  develop.sufuy.com;

        location / {
            proxy_pass http://47.3.1.16:8080/;
        }
    }

    server {
        listen       80;
        server_name  demo.sfuy.com;

        location / {
            proxy_pass http://47.9.11.6:9080/;
        }
    }

    server {
        listen      80;
        server_name  static.shouy.com;
        location / {
            root /home/sftppicupdate/upload;
        }
    }
//nginx.conf 
/**不要粘过去直接用,建议都阅读一边然后去取舍。**/

#user  nobody;
#启动几个worker线程 , 1 是根据物理cpu 的个数来设置 worker_processes
worker_processes  1;


#设置出错日志保存路径。
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#存放进程信息
#pid        logs/nginx.pid;

#事件模型 , worker_connections 和 worker_processes息息相关,nginx 单机处理并发能力个数是 :他俩相乘。
events {
    worker_connections  1024;
}

#配置tcp 响应服务信息
http {
    #文件的响应类型
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    #超时时间
    keepalive_timeout  65;

    #一般公司不会配置,有的浏览器支持,压缩响应的文件,css,js,img 等,使网络传输更小,节省流量。
    #gzip  on;

    #配置tomcat映射
    #agui 为 名称,随便起
    #weight 配置权重
    #upstream agui {  
        #server 192.168.232.132:8080 weight=9 ;  
        #server 192.168.232.133:8090 weight=10 ;  
    #} 


    #标识nginx 服务器响应的一些参数
    server {

        #默认端口
        listen       80;
        #响应的地址(ip/域名)如果是域名,需要解析和备案
        server_name  www.wqnmb.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        # / 代表根目录,例如访问localhost ,响应内容为 根目录html(root表权限)下的 index.html 
        location / {
            root   html;
            index  index.html index.htm;
            #proxy_pass http://agui;
            #proxy_pass http://123.206.43.122:80;
        }

        #配置静态资源
        #alias
        #在nginx安装根目录下创建 resource文件夹,在他下面继续创建 img,pdf两个文件夹
        #测试 :http://www.wqnmb.com/resource/pdf/test.pdf
        #测试 :http://www.wqnmb.com/resource/img/2.jpg
        location /resource/img/ {
           alias resource/img/ ;
        }
        location /resource/pdf/ {
           alias   resource/pdf/ ;
        }

        #root
        #测试 :http://www.wqnmb.com/test.pdf
        #location / {
            #root /home/sftppicupdate/upload;
        #}


        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #错误的编码 :  500 502 503 504  /50x.html , 还是去root权限 根目录下 html 目录下去找页面
        error_page   500 502 503 504 404 /50x.html;
        location = /50x.html {
            root   html;
        }


}

其他:

这里写图片描述

这里写图片描述

负载均衡:

再议

缓存服务:

再议

Nginx具有高性能原因
想要理解高性能还需要从最近本概念说起,要不是不好理解它为什么会性能高。一个线程通常具有五中状态,以及它们之间的转换关系如下,不可逆转。
1.新生—>就绪: 通过调用start()方法

2.就绪--->运行: 处于就绪状态的线程一旦得到CPU,就进入运行状态并自动调用自己的run()方法

3.运行--->阻塞: 处于运行状态的线程,执行sleep()方法,或等待I/O设备资源,让出CPU并暂时中止自己运行,进入阻塞状态

4.阻塞--->就绪: 睡眠时间已到,或等待的I/O设备空闲下来,线程便进入就绪状态,重新到就绪队列中等待CPU。当再次获得CPU时,便从原来中止位置开始继续运行。

5.运行--->死亡: (1)(正常情况下)线程任务完成

           (2)(非正常状况)线程被强制性的中止,如通过执行stop()或destroy()方法来终止一个线程

线程
这里重点说一下阻塞状态,当web服务器如tomcat处理大量请求时,会频繁进行磁盘IO读写操作,CPU轮训时会使运行状态的请求进入“阻塞”状态,这就是阻塞产生的原因,接下来说一下非阻塞。
非阻塞
把整个过程切换成小的任务,通过任务间协作完成。 由一个专门的线程来处理所有的 IO 事件,并负责分发。

事件驱动机制:事件到的时候触发,而不是同步的去监视事件。

线程通讯:线程之间通过 wait,notify 等方式通讯。保证每次上下文切换都是有意义的。减少无谓的进程切换。
Master/Worker并发工作模式
该模式来用来处理高并发的一种设计模式,多线程请求时,模式工作图如下

Master-Worker模式是常用的并行模式之一,它的核心思想是,系统有两个进程协作工作:Master进程,负责接收和分配任务;Worker进程,负责处理子任务。当Worker进程将子任务处理完成后,结果返回给Master进程,由Master进程做归纳汇总,最后得到最终的结果。
同一时刻只有一个worker建立连接,用到了锁的概念来保证只有一个worker处理请求。采用多线程好处,如果一个worker挂掉,对于其他没有影响
下面是一个简单的master、worker多线程实现,
Worker:用于实际处理一个任务;

Master:任务的分配和最终结果的合成

Main:启动程序,调度开启Master。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值