Day51-Nginx多实例知识与大厂企业级实战

Day51-Nginx多实例知识与大厂企业级实战

  • 1. 什么是nginx多实例?
  • 2. 为什么要用多实例?
  • 3. 大厂数百个业务项目,如何来管理?
  • 4. 大厂上百项目web分用户解决方案
    • 4.1 编译nginx环境实践:
    • 4.2 zuma实例(利用普通用户权限将不同业务进行彻底分离管理)
    • 4.3 inca实例(利用普通用户权限将不同业务进行彻底分离管理)
  • 5. 虚拟主机特殊功能优化
    • 5.1 恶意域名解析:

客户端访问nginx虚拟主机的原理流程
nginx多实例实践
nginx多实例大厂应用案例
nginx恶意域名解析及解决方案
nginx别名介绍及应用实践

在这里插入图片描述

1. 什么是nginx多实例?

简单理解,一个nginx master进程对应一个实例。
运行一个实例:

/usr/sbin/nginx -c /etc/nginx/nginx01.conf

运行多个实例。

/usr/sbin/nginx -c /etc/nginx/nginx02.conf
/usr/sbin/nginx -c /etc/nginx/nginx03.conf

2. 为什么要用多实例?

#运行www
/usr/sbin/nginx -c /etc/nginx/nginx02.conf
#运行blog
/usr/sbin/nginx -c /etc/nginx/nginx03.conf
#运行bbs:
/usr/sbin/nginx -c /etc/nginx/nginx01.conf

08年淘宝,分用户管理(类似现在KVM,docker)

3. 大厂数百个业务项目,如何来管理?

www blog bbs 加起来200个。

共赢:
分用户解决方案:解决开发和运维之间打架争权限问题,顺便就把网站宕机的责任推给他了。
1.为每个业务建立一个普通用户inca。
2.把普通用户的家目录,作为项目的站点目录(/home/inca目录权限是700,天然所有项目做了权限隔离)。
3.把配置文件、访问日次、错误日志都放到/home/inca目录。
4.nginx -c nginx.conf方法启动(普通用户无法启动特权端口(默认端口),用8080代替原理的80端口(前端有负载均衡))。
5.管理权限是inca用户(只要登录inca用户,可以做一切想做的事)。
6.把inca用户权限给开发组组长(分配轮流负责网站宕机。)
7.把200个项目,创建200个用户,分为200个实例,200人,10人一个小组。10个用户给他们。
8.后半夜宕机了,开发起来。处理不了,报警研发经理,报警研发总监,报警CTO。跟运维无关。
9.200个项目,10个运维,全给开发了,需要1个够了。给3个运维工资。
10.网站宕机会不会减少?网站宕机和开发相关,他写代码就会重视了。
11.学习开发,学习devops,开发自动化平台,搞云原生。。。。做优化,做架构调整。
12.流量翻倍的时候,不增加运维,80台。提前未雨绸缪。
13.工资又翻倍了。。
14.把运维和开发绑在一条绳上(系统网络归运维,服务宕机归开发)

4. 大厂上百项目web分用户解决方案

4.1 编译nginx环境实践:

1.添加两个普通用户并设置密码

[root@web02 ~]# useradd zuma
[root@web02 ~]# useradd inca
[root@web02 ~]# echo 123456|passwd --stdin inca
[root@web02 ~]# echo 123456|passwd --stdin zuma

2.在不同的用户家目录下面创建各种目录

[root@web02 ~]# cd /home/inca/
[root@web02 inca]# mkdir conf/extra log html -p
[root@web02 inca]# tree
├── conf      #主配置文件目录
│   └── extra #虚拟主机目录
├── html      #inca站点目录
└── logs      #日志目录

或者直接拷贝

[root@web02 zuma]# cp -a /application/nginx/{conf,logs,html} /home/inca
[root@web02 zuma]# cp -a /application/nginx/{conf,logs,html} /home/zuma

4.2 zuma实例(利用普通用户权限将不同业务进行彻底分离管理)

1)配置nginx配置文件

[root@web02 ~]# ls -ld /home/zuma
drwx------ 5 zuma zuma 114 715 16:29 /home/zuma
[root@web02 ~]# chown -R zuma.zuma /home/zuma
[root@web02 ~]# su - zuma
[zuma@web02 ~]$ tree
.
├── conf
│?? ├── extra
│?? │?? └── 01_www.etiantian.org.conf
│?? └── nginx.conf
├── html
│?? ├── 50x.html
│?? └── index.html
└── logs├── access.log├── error.log└── nginx.pid	
##主配置(注意路径)
[zuma@web02 ~]$ cat conf/nginx.conf 
user zuma;
worker_processes  1;
events {worker_connections  1024;
}
error_log  /home/zuma/logs/error.log  warn;
pid /home/zuma/logs/nginx.pid;
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';include /home/zuma/conf/extra/*.conf;
}

#虚拟主机配置(注意路径)

[zuma@web02 ~]$ cat conf/extra/01_www.etiantian.org.conf server {listen       8081;server_name  blog.etiantian.org;location / {root   /home/zuma/html;index  index.html index.htm;}access_log  /home/zuma/logs/access.log  main;}[zuma@web02 ~]$ cat html/index.html 
blog

2)检查语法

[zuma@web02 ~]$ /application/nginx/sbin/nginx -c /home/zuma/conf/nginx.conf -t
nginx: [alert] could not open error log file: open() "/application/nginx-1.20.1//logs/error.log" failed (13: Permission denied)
2021/07/15 16:21:10 [warn] 1702#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /home/zuma/conf/nginx.conf:1
nginx: the configuration file /home/zuma/conf/nginx.conf syntax is ok
nginx: configuration file /home/zuma/conf/nginx.conf test is successful

特别提示:[warn] [alert] 并非错误,可以忽略。

3)启动并检查

[zuma@web02 ~]$ /application/nginx/sbin/nginx -c /home/zuma/conf/nginx.conf &>/dev/null
[zuma@web02 ~]$ lsof -i :8081
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1705 zuma    5u  IPv4  27729      0t0  TCP *:tproxy (LISTEN)
nginx   1706 zuma    5u  IPv4  27729      0t0  TCP *:tproxy (LISTEN)

4)配置/etc/hosts解析,并访问

[zuma@web02 ~]$ curl www.etiantian.org:8081
www

(成功欧耶)

4.3 inca实例(利用普通用户权限将不同业务进行彻底分离管理)

1)配置nginx配置文件

[root@web02 ~]# ls -ld /home/inca
drwx------ 5 inca inca 114 715 16:29 /home/inca
[root@web02 ~]# chown -R inca.inca /home/inca
[root@web02 ~]# su - inca
[inca@web02 ~]$ tree
.
├── conf
│   ├── extra
│   │   └── 02_blog.etiantian.org.conf
│   └── nginx.conf
├── html
│   ├── 50x.html
│   └── index.html
└── logs├── access.log├── error.log└── nginx.pid

##主配置(注意路径)

[inca@web02 ~]$ cat conf/nginx.conf 
user inca;
worker_processes  1;
events {worker_connections  1024;
}
error_log  /home/inca/logs/error.log  warn;
pid /home/inca/logs/nginx.pid;
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';include /home/inca/conf/extra/*.conf;
}

#虚拟主机配置(注意路径)

[inca@web02 ~]$ cat conf/extra/02_blog.etiantian.org.conf server {listen       8082;server_name  blog.etiantian.org;location / {root   /home/inca/html;index  index.html index.htm;}access_log  /home/inca/logs/access.log  main;
}[inca@web02 ~]$ cat html/index.html 
blog

2)检查语法

[inca@web02 ~]$ /application/nginx/sbin/nginx -c /home/inca/conf/nginx.conf -t
nginx: [alert] could not open error log file: open() "/application/nginx-1.20.1//logs/error.log" failed (13: Permission denied)
2021/07/15 16:21:10 [warn] 1702#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /home/inca/conf/nginx.conf:1
nginx: the configuration file /home/inca/conf/nginx.conf syntax is ok
nginx: configuration file /home/inca/conf/nginx.conf test is successful

特别提示:[warn] [alert] 并非错误,可以忽略。

3)启动并检查

[inca@web02 ~]$ /application/nginx/sbin/nginx -c /home/inca/conf/nginx.conf &>/dev/null
[inca@web02 ~]$ lsof -i :8082
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1705 inca    5u  IPv4  27729      0t0  TCP *:tproxy (LISTEN)
nginx   1706 inca    5u  IPv4  27729      0t0  TCP *:tproxy (LISTEN)

4)配置/etc/hosts解析,并访问

[inca@web02 ~]$ curl blog.etiantian.org:8082
blog

(成功欧耶)

5. 虚拟主机特殊功能优化

5.1 恶意域名解析:

一:什么是恶意域名解析
www.jd.com A 1.1.1.1
有一个人想养域名(www.520.com),恶意解析,解析到1.1.1.1
会返回jd.com第一个虚拟主机。

60.9.5.3 www.520.com

一般情况下,要使域名能访问到网站需要两步,第一步,将域名解析到网站所在的主机,第二步,在web服务器中将域名与相应的网站绑定。但是,如果通过主机IP能直接访问某网站,那么把域名解析到这个IP也将能访问到该网站,而无需在主机上绑定,也就是说任何人将任何域名解析到这个IP就能访问到这个网站。

二:恶意域名解析的危害
可能您并不介意通过别人的域名访问到您的网站,但是如果这个域名是未备案域名呢?
假如那域名是不友善的域名,比如曾经指向非法网站,容易引发搜索引擎惩罚,连带IP受到牵连。即使域名没什么问题,但流量也会被劫持到别的域名,从而遭到广告联盟的封杀。

三;如何防止,配置里第一个标签如下配置

server{listen 80;server_name _default;return 500;
}

1)增加别名:一个名字以外的另一名字
张三、小张

www.etiantian.org
用户输入etiantian.org[root@web02 /application/nginx/conf]# cat extra/01_www.conf server {listen       80;server_name  www.etiantian.org etiantian.org;location / {root   html/www;index  index.html index.htm;}}

2)为什么要使用别名
1.用户需求

www.etiantian.org

用户喜欢输入etiantian.org,简单。
2.监控相同域名集群的不同节点URL。

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

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

相关文章

前端项目,个人笔记(二)【Vue-cli - 引入阿里矢量库图标 + 吸顶交互 + setup语法糖】

目录 1、项目中引入阿里矢量库图标 2、实现吸顶交互 3、语法糖--<script setup> 3.1、无需return 3.2、子组件接收父组件的值-props的使用 3.3、注册组件 1、项目中引入阿里矢量库图标 步骤一&#xff1a;进入阿里矢量库官网中&#xff1a;iconfont-阿里巴巴矢量…

教务管理系统(java+mysql+jdbc+Druid+三层架构)

1、项目要求 1.1数据库表描述 设计一个教务管理系统&#xff0c;要求如下&#xff1a; 系统涉及的表有 account表&#xff08;账号表&#xff09; teacher表&#xff08;教师表&#xff09; student表&#xff08;学生表&#xff09; course表 (课程表) score表&#xff08;成…

Python内置对象

Python是一种强大的、动态类型的高级编程语言&#xff0c;其内置对象是构成程序的基础元素。Python的内置对象包括数字、字符串、列表、元组、字典、集合、布尔值和None等&#xff0c;每种对象都有特定的类型和用途。 01 什么是内置对象 这些对象是编程语言的基础构建块&…

STP环路避免实验(思科)

华为设备参考&#xff1a;STP环路避免实验&#xff08;华为&#xff09; 一&#xff0c;技术简介 Spanning Tree Protocol&#xff08;STP&#xff09;&#xff0c;即生成树协议&#xff0c;是一种数据链路层协议。主要作用是防止二层环路&#xff0c;并自适应网络变化和故障…

Unity2D实现鼠标拖动物体移动(简单好抄)

1.新建脚本&#xff0c;并将脚本拖到你想要拖动的物体上即可 using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine;public class text : MonoBehaviour {private Vector3 offset;public int x 1;void OnMouseDown(…

SAP前台处理:物料主数据创建<MM01>之销售视图

一、背景&#xff1a; 终于来到了物料主数据&#xff0c;我觉得物料账是SAP最重要的一项发明&#xff0c;也一直是SAP的一项重要优势&#xff0c;物料账记录了一个个物料的生生不息&#xff1b; 本章主要讲解物料主数据和财务相关的主要内容&#xff1a;这里特别提示由于作者…

matlab软件基础

第1讲 MATLAB初步 MATLAB是矩阵实验室&#xff08;Matrix Laboratory&#xff09;的简称&#xff0c;是美国MathWorks公司出品的商业数学软件&#xff0c;用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB和Mathematica、Maple并称为三…

Linux 发布项目到OpenEuler虚拟机

后端&#xff1a;SpringBoot 前端&#xff1a;VUE3 操作系统&#xff1a;Linux 虚拟机&#xff1a;OpenEuler 发布项目是需要先关闭虚拟机上的防火墙 systemctl stop firewalld 一、运行后端项目到虚拟机 1、安装JDK软件包 查询Jdk是否已安装 dnf list installed | grep jd…

Redis数据结构对象中的类型检查与命令多态、内存回收

类型检查与命令多态 概述 redis中用于操作键的命令基本上可以分为两种类型。其中一种命令可以对任何类型的键执行&#xff0c;比如说DEL命令、EXPIRE命令、RENAME命令、TYPE命令、OBJECT命令等. 而另一种命令只能对特定类型的键执行&#xff0c;比如说 1.SET、GET、APPEND、…

OPTEE v3.20.0 FVP环境搭建

目录 一、前提条件 二、下载fvp代码 三、下载工具链 四、下载Foundation_Platform FVP平台 五、编译及运行 一、前提条件 1、安装如下的依赖工具 sudo apt-get install android-tools-adb android-tools-fastboot autoconf \ automake bc bison build-essential ccache c…

windows管理github代码

资料 windows SSH下载github

51单片机—AD/DA

目录 1.AD/DA元件介绍 2.运算放大器 3.原理分析 4.性能指标 5.内部芯片时序 6.程序实操 7.原理图 1.AD/DA元件介绍 一般传感器的值会随参数的值变化&#xff0c;AD一般对电压进行转换&#xff0c;AD有多个通道&#xff0c;但是DA只有一个通道&#xff0c;且AD的运用较为广…

路由器怎么做端口映射

路由器在网络中起到了连接不同设备和提供网络服务的重要作用。端口映射是一项常见的操作&#xff0c;它允许外部网络中的设备通过路由器访问内部网络中的设备。我们将介绍如何在路由器上进行端口映射的设置。 理解端口映射 在开始操作之前&#xff0c;我们需要了解一些基本概念…

反射 Reflection

反射 反射的概念 反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息(比如成员变量&#xff0c;构造器&#xff0c;成员方法等等)&#xff0c;并能操作对象的属性及方法。反射在设计模式和框架底层都会用到加载完类之后&#xff0c;在堆中就产生了一个Class类型…

Flutter 在 Windows 下的开发环境搭建(Flutter SDK 3.19.2)【图文详细教程】

Git 下载与安装 对于 Flutter 3.19&#xff0c;Git 版本需要 2.27 及以上 Git 下载&#xff1a; Git 官网&#xff1a;https://git-scm.com/Git 下载淘宝镜像&#xff1a;https://registry.npmmirror.com/binary.html?pathgit-for-windows/ 对于 Git 的安装教程&#xff0c;…

Python分析无人驾驶汽车在桂林市文旅行业推广的问卷

【项目背景】 通过市场调研、文本分析、访谈和问卷调查等方法&#xff0c;探讨&#xff1a; 网民对无人驾驶汽车出行服务的态度。无人驾驶安全员的行业背景。不同人群在旅游时的交通选择偏好。游客及当地居民对桂林市文旅路线的交通满意度。乘客对无人驾驶汽车的满意度。桂林…

超快速排序(蓝桥杯,归并排序,acwing)

题目描述&#xff1a; 在这个问题中&#xff0c;您必须分析特定的排序算法----超快速排序。 该算法通过交换两个相邻的序列元素来处理 n 个不同整数的序列&#xff0c;直到序列按升序排序。 对于输入序列 9 1 0 5 4&#xff0c;超快速排序生成输出 0 1 4 5 9。 您的任务是确…

Selenium不同版本配置自动下载驱动及打包细节

Selenium配置浏览器驱动 自动下载浏览器驱动的方法 selenium4.7.0自动下载浏览器驱动的方法 selenium4.11.0 或4.11.1手动设置浏览器驱动路径的方法pyinstaller打包程序时同时打包ChromeDriverchromedriver路径需要sys._MEIPASS的路径进行引用方法一&#xff1a;通过–add-data…

【Linux】从零开始认识进程 — 前篇

我从来不相信什么懒洋洋的自由。我向往的自由是通过勤奋和努力实现的更广阔的人生。。——山本耀司 从零开始认识进程 1 认识冯诺依曼体系2 操作系统3 进程3.1 什么是进程&#xff1f;&#xff1f;&#xff1f;3.2 进程管理PCB 3.3 Linux中的进程深入理解 3.4 进程创建总结 送给…

jvm的垃圾回收器以及触发full gc的场景

JVM&#xff08;Java虚拟机&#xff09;的垃圾回收器有很多种&#xff0c;主要包括以下几种&#xff1a; Serial收集器&#xff1a;串行收集器是最古老、最稳定的收集器。它使用单个线程进行垃圾收集工作&#xff0c;在进行垃圾回收时会暂停所有用户线程。 ParNew收集器&#…