nginx使用-(想学nginx,这篇就够了)

news2025/1/20 16:29:36

nginx使用-(想学nginx,这篇就够了)

upstream wgz{
       
        server 127.0.0.1:8081 ;
        server 127.0.0.1:8082 ;
       fair;
    }

反向代理

动静分离

负载均衡

高可用集群配置

 

反向代理

  • upstream要转发的地址的配置
  • proxy_pass请求转发的地址


 	location /user{
            proxy_pass http://127.0.0.1:8082;
        }


   location /html{
            proxy_pass http://127.0.0.1:8081;
        }

 

原先的时候我们需要请求的地址是127.0.0.1:8081才能请求到我们后端的地址,此时请求127.0.0.1:80/user就可以将请求转发到后端的接口中。

 

2.负载均衡

轮询,权重,后端响应最快

1.情景:

  • 解决服务器性能的瓶颈
  • 其实就是和反向代理是差不多的
  • 区别在于服务器的数量是不一样的

默认的就是轮询,可以设置加权轮询。

2.1轮询

2.案例1

权重是一样的可以平均进行分配

最主要就是proxy_pass的配置和上有集合的配置

 # 上流配置
    upstream wgg {
        server 127.0.0.1:8081 weight=1;
        server 127.0.0.1:8082 weight=1;
    }
    # server可以有多个
    server {
        listen 82;
        server_name localhost;

        location /hello{
            proxy_pass http://wgg;
        }

}

 此时请求的后台接口是一半一半。

2.2权重轮询

设置不同的权重

可以根据权重分配请求的多少

 # 上流配置
    upstream wgg {
        server 127.0.0.1:8081 weight=5;
        server 127.0.0.1:8082 weight=1;
    }
    # server可以有多个
    server {
        listen 82;
        server_name localhost;

        location /hello{
            proxy_pass http://wgg;
        }

}

2.3fair

需要自己下载:https://blog.csdn.net/LeonJinhaiSun/article/details/121153174

根据后台服务器的响应信息进行分配

upstream wgz{
       
        server 127.0.0.1:8081 ;
        server 127.0.0.1:8082 ;
       fair;
    }

3.iphash

解决session共享。

保证session不丢失,推荐使用redis

 # 上流配置
    upstream wgz{
        ip_hash;
        server 127.0.0.1:8081 ;
        server 127.0.0.1:8082 ;
    }
    # server可以有多个
    server {
        listen 81;
        server_name localhost;
 	    location /user{
            proxy_pass http://wgz;
        }
}

4.常用命令

4.1常用命令

https://blog.csdn.net/weixin_52556583/article/details/129226706

 

nginx -s stop 停止

nginx -s quit 安全退出

start nginx  开启nginx

nginx -s reload 重新加载配置文件

nginx -v 查看版本号

nginx -V 产看版本号比较详细

ps ef |grep nginx 查看nginx的进程的信息

tasklist /fi "imagename eq nginx.exe"  查看运行的nginx

taskkill /f /t /im nginx.exe 关闭打开的nginx

nginx -t 验证配置是不是正确的

 

4.2配置文件详解

1.并发处理的值,值越大处理并发的能力就越强。

worker_processes 1;

2.events配置和用户连接的部分。1024是最大的连接量。

events {
    worker_connections 1024;
}

3.http块。频繁配置的地方全局快。

配置最频繁的。内部server

  • 日志
  • 超时时间
  • 等等
   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;

    #gzip  on;

4.server块

  • listen 监听端口
  • server_name服务器的地址
  • location 映射的地址
 server {
        listen 82;
        server_name localhost;

        location /hello{
            proxy_pass http://wgg;
        }


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

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #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;
        #}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

4.3location

主要就是匹配路径的设置

= uri严格匹配

~正则但是区分大小写

~*正则不区分大小写

~~不含正则,找的是匹配最高的

有正则的一定有~*或者~

4.4nginx原理

master和worker

在nginx启动的时候有两个进程,一个master和一个worker

 

  • master就是领导
  • worker表示进行工作的进程

 

当client发起请求的时候master获取到前端的请求,worker就抢任务,调用不同的地方处理client的请求。

master有一个,worker多个。

  • 利于热部署,reload
  • 每个worker都是独立的进程,不需要加锁
  • 一个进程退出了不影响其他的进程。提高可用。

 

多少个worker是最合适的?

  • io多路复用进程。在windows下没有这个玩意。
  • 异步非阻塞

worker和cpu数量是最合适的。

worker的连接数?

  • 每个worker支持1024

5.动静分离

静态资源部署到 nginx可以加快静态资源的解析的速度

 

不是单纯的将静态文件和动态文件的分离而是请求的分离。

可以设置nginx的缓存。

 server {
        listen 83;
        server_name localhost;
        #  autoindex on;
        location /dff {
            # 静态资源的位置
            root E:/cxl/mytools/other/nginx;

        }
        # 以列表的形式展示文件夹中的内容
        location /mytools {
            root E:/cxl/;
            autoindex on;
        }
    }

 

6.集群配置

6.1准备工作

1.解决nginx宕机的准备。

  • 一个主:master
  • 一个副:node

2.主从模式

 

虚拟ip不是存在的但是需要进行绑定,前台进行访问的就是虚拟的ip。

3.centos下nginx的安装

./configure 
make 
make install

4.keepalived安装教程

基础环境准备

yum -y install gcc gcc-c++ autoconf automake make 
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
 
 
yum install keepalived –y

主:192.168.88.129

副:192.168.88.130

虚拟服务器:192.168.88.131

  • 主配置配置文件。修改 /etc/keepalived/keepalivec.conf 配置文件

global_defs { 
	notification_email { 
		acassen@firewall.loc 
		failover@firewall.loc 
		sysadmin@firewall.loc 
	} 
	notification_email_from Alexandre.Cassen@firewall.loc 
	smtp_server 192.168.17.129 
	smtp_connect_timeout 30 
	router_id LVS_DEVEL 
} 
 
vrrp_script chk_http_port { 
	script "/usr/local/src/nginx_check.sh" 
	interval 2  
	weight 2 
} 
 
vrrp_instance VI_1 { 
	state MASTER  
	interface ens33 
	virtual_router_id 51 
	priority 90  
	advert_int 1 
	authentication { 
		auth_type PASS 
		auth_pass 1111 
	} 
	virtual_ipaddress { 
		192.168.88.131 
	} 
}

  • 副结点
global_defs { 
	notification_email { 
		acassen@firewall.loc 
		failover@firewall.loc 
		sysadmin@firewall.loc 
	} 
	notification_email_from Alexandre.Cassen@firewall.loc 
	smtp_server 192.168.17.129 
	smtp_connect_timeout 30 
	router_id LVS_DEVEL 
} 
 
vrrp_script chk_http_port { 
	script "/usr/local/src/nginx_check.sh" 
	interval 2  
	weight 2 
} 
 
vrrp_instance VI_1 { 
	state BACKUP  
	interface ens33 
	virtual_router_id 51 
	priority 70  
	advert_int 1 
	authentication { 
		auth_type PASS 
		auth_pass 1111 
	} 
	virtual_ipaddress { 
		192.168.88.131 
	} 
}

在主和副的** /usr/local/src 添加检测脚本

#!/bin/bash 
A=`ps -C nginx – no-header |wc -l` 
if [ $A -eq 0 ];then 
	/usr/local/nginx/sbin/nginx 
	sleep 2 
	if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then 
		killall keepalived 
	fi 
fi

5.启动主和副

把两台服务器上 Nginx 和 keepalived 启动

  • 启动 Nginx: ./nginx
  • 启动 keepalived: systemctl start keepalived.service
 ./nginx 
systemctl start keepalived.service

查看是不是启动成功了

[root@lxz sbin]#  ps -ef |grep keepalived 
root       1600      1  0 15:53 ?        00:00:00 /usr/sbin/keepalived -D 
root       1601   1600  0 15:53 ?        00:00:00 /usr/sbin/keepalived -D 
root       1602   1600  0 15:53 ?        00:00:00 /usr/sbin/keepalived -D 
root       1690   1493  0 16:10 pts/0    00:00:00 grep --color=auto keepalived

最终测试:虚拟结点。http://192.168.88.131

 

6.关闭主结点

./nginx -s stop 
 systemctl stop keepalived.service

6.2配置信息介绍

  •  global_defs 全局配置
    • routerid LVSDEVEL。访问到主机
    • vi /etc/hosts可以打开并进行设置

 

 

  • vrrpscript chkhttp_port:检测脚本配置。检测的间隔是2秒。weight,设置当前服务器的权重。
  • vrrpinstance VI1 {
     state BACKUP //设置主还是副服务器
     interface ens33 //当前网卡的名称
     virtualrouterid 51 //标注主和备虚拟主机的id。要求主和备是一致的
     priority 70 //优先级,主的优先级大
     advertint 1
     authentication {
     authtype PASS
     authpass 1111
     }
     virtualipaddress {
     192.168.88.131 //虚拟ip的配置
     }
    }
global_defs { 
	notification_email { 
		acassen@firewall.loc 
		failover@firewall.loc 
		sysadmin@firewall.loc 
	} 
	notification_email_from Alexandre.Cassen@firewall.loc 
	smtp_server 192.168.17.129 
	smtp_connect_timeout 30 
	router_id LVS_DEVEL 
} 
 
vrrp_script chk_http_port { 
	script "/usr/local/src/nginx_check.sh" 
	interval 2  
	weight 2 
} 
 
vrrp_instance VI_1 { 
	state BACKUP  //设置主还是副服务器 
	interface ens33 
	virtual_router_id 51 
	priority 70  
	advert_int 1 
	authentication { 
		auth_type PASS 
		auth_pass 1111 
	} 
	virtual_ipaddress { 
		192.168.88.131 
	} 
}

脚本介绍

要是主服务器挂掉了就关闭备服务器的所有的内容。

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

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

相关文章

程序设计 算法基础

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

【并发专题】操作系统模型及三级缓存架构

目录 课程内容一、冯诺依曼计算机模型详解1.计算机五大核心组成部分2.CPU内部结构3.CPU缓存结构4.CPU读取存储器数据过程5.CPU为何要有高速缓存 学习总结 课程内容 一、冯诺依曼计算机模型详解 现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时,先从内存中…

python学习之【浅拷贝】

前言 上一篇文章,python学习之【继承、封装、多态】主要学习了面向对象的三大特征。这篇文章记录下对python的浅拷贝的学习,下一篇文章接着学习深拷贝。 简单了解 浅拷贝:python拷贝一般都是浅拷贝,拷贝时,对象包含的…

【C语言】函数重难点之函数递归

大家好,我是深鱼~ 目录 一、函数递归知识讲解 1.什么是递归? 2.递归的两个必要条件 2.1练习1: 2.2练习2: 二、递归与迭代 2.1练习3 2.2练习4 一、函数递归知识讲解 1.什么是递归? 程序调用自身的编程技巧称为…

UNITY随记(八) SHADER实现立方体CUBE显示边框,描边

Shader "Vitens/CubeOutline"{Properties{_Color("Color", color) = (1,1,1,1)_Width("Width", range(0,0.5)) = 0.1}SubShader{Tags {"Queue"=

windows下载安装FFmpeg

FFmpeg是一款强大的音视频处理软件,下面介绍如何在windows下下载安装FFmpeg 下载 进入官网: https://ffmpeg.org/download.html, 选择Windows, 然后选择"Windows builds from gyan.dev" 在弹出的界面中找到release builds, 然后选择一个版本&#xff0…

Java中的生产者/消费者模型

一、什么是生产者/消费者模型 生产者-消费者模型(Producer-Consumer problem)是一个非常经典的多线程并发协作的模型。 比如某个模块负责生产数据,而另一个模块负责处理数据。产生数据的模块就形象地被称为生产者;而处理数据的模…

基地培训一周总结-用两台虚拟机模拟公司和员工

前言: 本来是打算每天跟更新所学内容,但奈何自己接触新知识速度较慢,每天都在完不成任务的边缘疯狂试探,短时间大量知识的涌入,感觉脑袋瓜在有点 跟不上。这周结束的时候,老师布置了个小项目,融…

Linux操作系统下安装python环境

参考:Linux操作系统下安装python环境_linux如何下载python_秃头小猿-F的博客-CSDN博客 注意 切换用户 二、切换root用户 1.给root用户设置密码:命令:sudo passwd root输入密码,并确认密码。2.重新输入命令:su root …

【数据结构】之十分好用的“链表”赶紧学起来!(第一部分单向链表)

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

某行动态cookie反爬虫分析

某行动态cookie反爬虫分析 1. 预览 反爬网址(base64): aHR0cDovL3d3dy5wYmMuZ292LmNu 反爬截图: 需要先加载运行js代码,可能是对环境进行检测,反调试之类的 无限debugger 处理办法 网上大部分人说的都是添加cookie来解决。 那个noscrip…

哈工大计算机网络课程网络安全基本原理之:身份认证

哈工大计算机网络课程网络安全基本原理之:身份认证 在日常生活中,在很多场景下我们都需要对当前身份做认证,比如使用密码、人脸识别、指纹识别等,这些都是身份认证的常用方式。本节介绍的身份认证,是在计算机网络安全…

flask处理表单数据

flask处理表单数据 处理表单数据在任何 web 应用开发中都是一个常见的需求。在 Flask 中,你可以使用 request 对象来获取通过 HTTP 请求发送的数据。对于 POST 请求,可以通过 request.form 访问表单数据。例如: from flask import Flask, r…

设置Fiddler来抓取Android接口数据

1.下载安装fiddler,安装包可自行百度。安装完成打开fiddler 2.将Fiddler设置远程访问PC 选择Fiddler->Tools->Fiddler Option 3.选择Connection,在Fiddler listen on port后输入8888,表示允许远程PC连接。 4.在电脑运行窗口中&#xf…

Leetcode145. 二叉树的后序遍历

题目描述 题目链接&#xff1a;https://leetcode.cn/problems/binary-tree-postorder-traversal/description/ 代码实现 class Solution {List<Integer> tree new ArrayList<>();public List<Integer> postorderTraversal(TreeNode root) {postorder(ro…

深度学习实践——卷积神经网络实践:裂缝识别

深度学习实践——卷积神经网络实践&#xff1a;裂缝识别 系列实验 深度学习实践——卷积神经网络实践&#xff1a;裂缝识别 深度学习实践——循环神经网络实践 深度学习实践——模型部署优化实践 深度学习实践——模型推理优化练习 深度学习实践——卷积神经网络实践&#xff…

Android SDK 上手指南||第一章 环境需求||第二章 IDE:Eclipse速览

第一章 环境需求 这是我们系列教程的第一篇&#xff0c;让我们来安装Android的开发环境并且把Android SDK运行起来&#xff01; 介绍 欢迎来到Android SDK入门指南系列文章&#xff0c;如果你想开始开发Android App&#xff0c;这个系列将从头开始教你所须的技能。我们假定你…

NOSQL之Redis配置及优化

目录 一、关系型数据库 二、非关系型数据库 三、关系型数据库和非关系型数据库区别 1、数据存储方式不同 2、扩展方式不同 3、对事务性的支持不同 四、Redis简介 五、Redis优点 &#xff08;1&#xff09;具有极高的数据读写速度 &#xff08;2&#xff09;支持丰富的…

软件架构师——1、计算机组成与体系结构

计算机结构 &#xff08;★&#xff09; 运算器&#xff1a; 算术逻辑单元ALU&#xff1a;数据的算术运算和逻辑运算累加寄存器AC&#xff1a;通用寄存器&#xff0c;为ALU提供一个工作区&#xff0c;用于暂存数据数据缓冲寄存器DR&#xff1a;写内存时&#xff0c;暂存指令或…