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.mfbz.cn/a/470873.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Arduino 开发 野火ESP8266模块的串口通信

一、硬件连接 Arduino ESP8266 串口通信是一个常见的任务,允许通过串行接口与其他设备或计算机进行通信。 连接硬件:将野火ESP8266模块通过USB连接到电脑。注意电源为3.3V。 选择开发板和端口,在Arduino IDE中,选择ESP8266开发板…

图神经网络实战(5)——常用图数据集

图神经网络实战(5)——常用图数据集 0. 前言0. 图数据集介绍2. Cora 数据集3. Facebook Page-Page 数据集小结系列链接 0. 前言 图数据集往往比单纯的连接集合更丰富,节点和边也可以具有表示分数、颜色、单词等的特征。在输入数据中包含这些…

NLP---Bert分词

目录&#xff1a; Q&#xff1a;bert分词步骤1&#xff1a;构建N * N 的相关性矩阵&#xff0c;计算相邻两个字的相关性&#xff0c;低的话&#xff08;<阈值&#xff09;就切割。2&#xff1a;将A词进行mask计算出A的embedding&#xff0c;然后将AB两个词一起mask&#xff…

【滑动窗口】长度最小的子数组|无重复字符的最长子串|最大连续1的个数 III|将 x 减到 0 的最小操作数

1. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 1.题目解析&#xff1a; 2.算法原理 &#xff08;1&#xff09;方法一&#xff1a;暴力列举出所有的子数组的和 时间复杂度&#xff1a;O&#xff08;n**2&#xff09;&#xff1a;枚举所有子数组O&#xff08;…

使用 Redux 管理 React 应用状态

使用 Redux 管理 React 应用状态 在复杂的 React 应用中&#xff0c;管理组件状态变得越来越复杂&#xff0c;这时候引入 Redux 可以帮助我们更好地管理状态。Redux 是一个可预测状态容器&#xff0c;它可以帮助我们统一管理应用的状态&#xff0c;使得状态变化更加可控。本文…

机器学习基本算法(一)

1.线性回归算法 Linear Regression 线性回归算法&#xff08;Linear Regression&#xff09;是一种预测性的建模技术&#xff0c;它研究的是因变量&#xff08;目标&#xff09;和自变量&#xff08;预测器&#xff09;之间的关系。线性回归假设目标值与特征之间线性相关&…

MacOS Xcode 使用LLDB调试Qt的 QString

环境&#xff1a; MacOS&#xff1a; 14.3Xcode&#xff1a; Version 15.0Qt&#xff1a;Qt 6.5.3 前言 Xcode 中显示 预览 QString 特别不方便, 而Qt官方的 lldb 脚本debugger/lldbbridge.py一直加载失败&#xff0c;其他第三方的脚本都 不兼容当前的 环境。所以自己研究写…

【how2j练习题】JS部分阶段练习

练习一 <!--练习&#xff0c;做一个简单的加法计算器--><html><input type"text" size "2" id "num1" ><input type"text" size "2" id "num2" ><input type"text" siz…

Density Profile Tool 程序(1D):通过 VMD 可计算 LAMMPS 轨迹的数密度分布(二)

​ 给大家推荐一个结构轨迹后处理程序 Density Profile Tool&#xff0c;目前尝试过的轨迹文件只有LAMMPS文件&#xff0c;感兴趣的大家可以试试其他轨迹文件。这个后处理软件可以计算数密度、质量、电荷和电子分布等性质。 感谢论文的原作者&#xff01; VMD 插件&#xff1…

stm32之GPIO电路介绍

文章目录 1 GPIO介绍2 GPIO的工作模式2.1 浮空输入2.2 上拉输入2.3 下拉输入2.4 模拟输入2.5 开漏输出2.6 推挽输出2.7 复用开漏输出2.8 复用推挽输出2.9 其他 3 应用方式4 常用库函数 1 GPIO介绍 保护二极管&#xff1a;保护引脚&#xff0c;让引脚的电压位于正常的范围施密特…

基于java校园在线打印预约系统设计与实现

摘 要 二十一世纪以来&#xff0c;计算机行业应用技术不断发展&#xff0c;人们的观念也在不断改变。传统打印行业&#xff0c;用户已经意识到传统的打印文件方法等待时间太长。校园在线打印预约系统可以通过网络来打印文件&#xff0c;用户可以在特定的时间预约打印文件&#…

设计模式中的UML基础

设计模式中的UML基础 目录 1、UML概述 2、UML的用途 3、UML的构成 4、UML图 5、UML类图 5.1、类的构成 5.2、类与类之间的关系 6、绘制UML图的软件工具 在讲解设计模式时&#xff0c;会使用到UML建模中的类图去讲解类与类之间的关系&#xff0c;所以这里需要给大家普…

Qt5.9.6+VS2015 部署PCL1.8.1

本文系转载&#xff0c;如侵权请告知删除。原博文链接&#xff1a;https://blog.csdn.net/jepco1/article/details/80752954 0 编译环境 所需软件包及其版本 Qt5.9.6 msvc2015_64 VS2015 VTK 8.0.0 https://gitlab.kitware.com/vtk/vtk/tree/v8.0.0 PCL1.8.1 https://github.c…

综合知识篇12-软件开发方法考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例…

原生html vue3使用element plus 的树tree上移下移案例源码

上效果 html源码 <!DOCTYPE html> <html lang"en"> <!-- * Name: mallSalesReports.html * Description: * Author Lani * date 2024-02-28 18:32:36 --> <head><meta charset"UTF-8"><meta name"viewport" …

【蓝桥杯选拔赛真题41】C++操作字符串 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解析

目录 C操作字符 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C操作字符 第十四届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现 给定两个字符串S1和S2(1<S1长度&…

JS精度计算的几种解决方法,1、转换成整数计算后再转换成小数,2、toFixed,3、math.js,4、bignumber.js,5、big.js

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、转换成整数计算后再转换成小数二、toFixed三、math.js四、bignumber.js五、big.js总结 前言 原始计算 let aNum 6.6 0.3;let bNum 6.6 - 0.2;let cNum 6.6 * 0.3;let dNum 6.6 / 0.2;console.log(…

界面组件DevExpress WinForms v23.2 - 数据可视化功能升级

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

Android14 - AMS之Activity启动过程(3)

Android14 - AMS之Activity启动过程&#xff08;1&#xff09;-CSDN博客 Android14 - AMS之Activity启动过程&#xff08;2&#xff09;-CSDN博客 上篇中我们梳理完ActivityStarter的startActivityInner&#xff0c;本篇从这里开始&#xff1a; platform/frameworks/base/servi…

c++类和对象(三)

c类和对象&#xff08;三&#xff09; 再谈构造函数 Static成员 友元 内部 匿名对象 拷贝对象时的一些编译器优化 再次理解封装 1.再谈构造函数 1.1构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值。…