Nginx详解-安装配置等

news2024/10/6 18:20:44

目录

一、引言

1.1 代理问题

1.2 负载均衡问题

1.3 资源优化

1.4 Nginx处理

二、Nginx概述

三、Nginx的安装

3.1 安装Nginx

3.2 Nginx的配置文件

四、Nginx的反向代理【重点】

4.1 正向代理和反向代理介绍

4.2 基于Nginx实现反向代理

4.3 关于Nginx的location路径映射


 

一、引言


1.1 代理问题

客户端到底要将请求发送给哪台服务器。

发送给服务器1还是服务器2
1.2 负载均衡问题

如果所有客户端的请求都发送给了服务器1,那么服务器2将没有任何意义

负载均衡问题

1.3 资源优化

客户端发送的请求可能是申请动态资源的,也有申请静态资源,但是都是去Tomcat中获取的

静态资源访问

1.4 Nginx处理
在搭建集群后,使用Nginx

二、Nginx概述


Nginx是由俄罗斯人研发的,应对Rambler的网站,并且2004年发布的第一个版本。

Nginx之父

官方文档 nginx 

Nginx的特点:

  • 俄罗斯生产,底层C语言

  • 稳定性极强。 7*24小时不间断运行。

  • Nginx提供了非常丰富的配置实例。

  • 占用内存小,并发能力强。

  • 单机可扛5万并发

其他软负载均衡器

​ lvs:国产,章文松博士开发,性能优于nginx,性能较单一

硬负载均衡器

硬件,价格昂贵,性能高,每秒以GB为单位接收请求

​ 常用品牌:f5,netscaler等等

三、Nginx的安装


nginx容器内部路径

​ /usr/share/nginx/html: 存放静态资源​ /etc/nginx/nginx.conf : nginx的配置文件(配置静态资源 ,反向代理信息, 负载均衡)​ var/log/nginx:记录日志

3.1 安装Nginx

使用docker命令安装nginx

注意:如果没有这个文件,是不能挂载的,所以需要先在centos指定位置复制一个nginx.conf。 我们可以先随便创建一个nginx,容器中会包含nginx.conf , 同时也可以看到nginx容器内目录结构。

docker run -id --name docker-nginx 
-v /opt/docker-nginx/data/conf/nginx.conf:/etc/nginx/nginx.conf 
-v /opt/docker-nginx/data/html:/usr/share/nginx/html 
-p 81:80 daocloud.io/library/nginx:latest

使用Docker-Compose安装

docker-compose-nginx.yml 文件

version: '3.1'
services:
  nginx:
    restart: always
    image: daocloud.io/library/nginx:latest
    container_name: nginx3
    ports:
      - 82:80
    volumes:
      - /opt/docker-nginx/data/conf/nginx.conf:/etc/nginx/nginx.conf
      - /opt/docker-nginx/data/log:/var/log/nginx
      - /opt/docker-nginx/data/html:/usr/share/nginx/html
  tomcat:
    restart: always
    image: daocloud.io/library/tomcat:8.5.15-jre8
    container_name: nginx-tomcat
    ports:
      - 9091:8080
    volumes:
      - /var/lib/docker/volumes/olumes/_data:/usr/local/tomcat/webapps/ROOT   

使用compose构建容器

docker-compose -f 文件名 up -d

3.2 Nginx的配置文件

关于Nginx的核心配置文件nginx.conf

worker_processes  1;        
error_log  /var/log/nginx/error.log warn;
# 以上统称为全局块, 
# worker_processes他的数值越大,Nginx的并发能力就越强
# error_log 代表Nginx的错误日志存放的位置
​
events {
    worker_connections  1024;
}
# events块
# worker_connections他的数值越大,Nignx并发能力越强
​
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    server {
        listen       80;
        server_name  localhost;
​
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
        # location块
        # root:将接收到的请求根据/usr/share/nginx/html去查找静态资源
        # index: 默认去上述的路径中找到index.html或者index.htm
    }
    # server块
    # listen: 代表Nginx监听的端口号 
    # localhost:代表Nginx接收请求的ip
}
# http块
# include代表引入一个外部的文件 -> /mime.types中放着大量的媒体类型
# include /etc/nginx/conf.d/*.conf; -> 引入了conf.d目录下的以.conf为结尾的配置文件
​

四、Nginx的反向代理【重点


4.1 正向代理和反向代理介绍

正向代理:

  • 正向代理服务是由客户端设立的。

  • 客户端了解代理服务器和目标服务器都是谁。

  • 帮助咱们实现突破访问权限,提高访问的速度,对目标服务器隐藏客户端的ip地址。

正向代理

反向代理:

  • 反向代理服务器是配置在服务端的。

  • 客户端是不知道访问的到底是哪一台服务器。

  • 达到负载均衡,并且可以隐藏服务器真正的ip地址。

4.2 基于Nginx实现反向代理

准备一个目标服务器。

启动了之前的tomcat服务器。

编写nginx的配置文件,通过Nginx访问到tomcat服务器。

server{
  listen 80;
  server_name localhost;
    # 基于反向代理访问到Tomcat服务器
  location / {
    # 注意:ip是tomcat内部ip地址, 端口号也是tomcat的内部端口号
    proxy_pass http://你的地址:8080/;
  }
}

4.3 关于Nginx的location路径映射

优先级关系如下:

  • location = /路径:优先级最高,精准匹配,一旦匹配, 不再去找其他匹配项。

  • location ^~ /路径:优先级次之,字符串匹配,一旦匹配, 不再去找其他匹配项。

  • location ~ 正则表达式:如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。

  • location ~* 正则表达式:和location ~ 正则表达式相同,不过当前方式不区分大小写。

  • location /路径:常规方式,匹配前缀,优先级最低。

举个栗子:

# 直接匹配
location = / {
  # 精准匹配,主机名后面不能带任何的字符串
}
​
# 常规匹配
location /xxx {
  # 匹配所有以/xxx开头的路径
  
}
​
# 正则匹配
location ~ /xxx {
  # 匹配所有以/xxx开头的路径
}
​
# 匹配开头路径
location ^~ /images/ {
  # 匹配所有以/images开头的路径,匹配后,不再删选其他选项
}
​
# 正则匹配后缀
location ~* \.(gif|jpg|png)$ {
  # 匹配以gif或者jpg或者png为结尾的路径
}
​
# 全部通配
location / {
  # 匹配全部路径  
}

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

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

相关文章

Qt时间日期处理与定时器使用总结

一、日期时间数据 1.QTime 用于存储和操作时间数据的类,其中包括小时(h)、分钟(m)、秒(s)、毫秒(ms)。函数定义如下: //注:秒(s)和毫秒(ms)有默认值0 QTime::QTime(int h, int m, int s 0, int ms 0) 若无须初始化时间数据,可…

【新奇E100-开发记录】

新奇E100-开发记录 ■ 环境■ 编译器■ Ubuntu主机环境需要安装如下工具■ mips32R1工具链(toolchain )■ defconfig■ dts的选择■ 全局编译■■ ■ 环境 ■ 编译器 ■ Ubuntu主机环境需要安装如下工具 shell $ sudo apt install git $ sudo apt ins…

Protocol Buffers语言特性 (proto 3)

定义消息类型 首先让我们看一个非常简单的例子。假设您想要定义一个搜索请求消息格式,其中每个搜索请求都有一个查询字符串、您感兴趣的特定结果页面以及每个页面的多个结果。下面是用于定义消息类型的.proto文件。 syntax "proto3";message SearchRequ…

Docker学习笔记(二)镜像、容器、仓库相关命令操作

一、docker镜像操作 列出镜像列表 我们可以使用 docker images 来列出本地主机上的镜像。 各个选项说明: REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小 查…

Linux上搭建邮件服务

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 Linux上搭建邮件服务 前言电子邮件的工作原理和基本组成部分1. 电子邮件的工作原理2. 电子邮件的…

imx6ull/linux应用编程学习(7)在LCD上显示文字

在linux中,确实可以像裸机一样自己取模、自己写函数打点显示,但是效率很低,不能满足多文字显示,在Linux 系统中, 字体文件通常会放在/usr/share/fonts 目录下,有了字体文件之后,我们就不需要再对…

手把手edusrc漏洞挖掘和github信息收集

0x1 前言 这里主要还是介绍下新手入门edusrc漏洞挖掘以及在漏洞挖掘的过程中信息收集的部分哈!(主要给小白看的,大佬就当看个热闹了)下面的话我将以好几个不同的方式来给大家介绍下edusrc入门的漏洞挖掘手法以及利用github信息收…

【sqlite3】联系人管理系统

SQLite3实现简单的联系人管理系统 有关sqlite3的基础知识请点击:SQLite3的使用 效果展示: 创建一个名为contacts.db的数据库 首先,我们需要创建一个名为contacts.db的数据库,并建立一个名为"contact"的表&#xff0…

20.《C语言》——【移位操作符】

🌹开场语 亲爱的读者,大家好!我是一名正在学习编程的高校生。在这个博客里,我将和大家一起探讨编程技巧、分享实用工具,并交流学习心得。希望通过我的博客,你能学到有用的知识,提高自己的技能&a…

八大催化剂,花旗为何高调看涨港股?

港股三大指数今日迎来快速拉升行情,恒生科技指数午间一度大幅上涨2.51%,恒指、国指分别上涨1.18%及1.22%,恒指一度收复万八关口。截止收盘,恒生仍然保持1.18%左右的涨幅。 7月2日,据恒生指数公司消息,恒生…

Docker加速器配置指南:提升镜像下载速度的秘诀 加速安装Mysql Redis ES

在安装 Docker 镜像时,由于官方镜像下载速度较慢,我们可以使用阿里云的镜像加速器来提升下载速度。 使用阿里云镜像加速器 首先,找到并配置阿里云的镜像加速器。安装教程如下: 登录阿里云,进入容器镜像服务。直达链…

VSCode里python代码不扩展/级联了的解决办法

如图 解决办法:重新下载新的扩展工具 步骤如下 1、在左边工具栏打开Extensions 2、搜索框输入python,选择别的扩展工具,点击Install - 3在扩展工具所在的目录下,新建一个文件,就可以用了

地理信息科学:生态保护的智慧经纬

在地球这颗蓝色星球上,每一片森林的呼吸、每一条河流的流淌,都是生命交响曲中不可或缺的音符。而地理信息科学(GIS),正是我们手中解读自然密码、护航生态平衡的精密仪器。今天,让我们深入探讨GIS如何在生物…

蒙阴蜜桃节:北纬 35 度的甜蜜盛宴

蒙阴,这座位于北纬 35 度黄金水果带的魅力之城,凭借着沙壤土、长日照、大温差、好生态的天然禀赋,孕育出了令人陶醉的“蒙阴蜜桃——北纬 35 度的甜”。 7月2日—3日,主题为“蒙阴好丰景 桃香产业兴”的国家鲁中山区桃产业集群项目…

Atom CMS v2.0 SQL 注入漏洞(CVE-2022-25488)

前言 CVE-2022-25488 是一个发现于 Telesquare SDT-CW3B1 设备中的命令注入漏洞。这一漏洞可以被未经认证的远程攻击者利用,通过特殊构造的 HTTP 请求在设备上执行任意命令。以下是关于该漏洞的详细信息: 漏洞详细信息 漏洞编号: CVE-2022-25488影响范…

V-bind指令配合图片轮播案例

我们先写个图片&#xff0c;这个图片是静态的&#xff0c;不会轮播改变。但有时图片是动态的&#xff0c;要通过一些程序对它进行动态改变&#xff0c;这时就需要V-bind来进行绑定&#xff0c;先放个图片进去&#xff0c;代码如下&#xff1a; <template><view>&l…

智驾追平、销量复活,蔚来又有未来了?

文&#xff5c;刘俊宏 编&#xff5c;王一粟 六月&#xff0c;是智能汽车集体“狂欢”的月份。 根据最新的汽车销量显示&#xff0c;多家智能汽车厂商“开起了香槟”。理想汽车和鸿蒙智行分列“榜一榜二”&#xff0c;两者分别以47774辆和46141辆的成绩&#xff0c;“咬的难…

探索Linux:开源世界的无限可能

Linux是一款开源操作系统&#xff0c;它的起源可以追溯到上世纪90年代初。这个故事始于一个名叫Linus Torvalds的芬兰大学生&#xff0c;他在1983年开始编写一个用于个人电脑的操作系统内核。在他的努力下&#xff0c;Linux逐渐发展成为一个稳定而强大的操作系统。 然而&#…

预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来

预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来 目录 预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来 2.运行环境为Matlab2023b及以上&#xff1b; 3…

安卓手机软件自动运行插件的开发流程及代码科普!

随着智能手机的普及和移动互联网的快速发展&#xff0c;安卓手机软件的需求日益旺盛&#xff0c;为了提高软件的功能性和扩展性&#xff0c;许多开发者选择通过插件的方式为软件添加新功能。 一、安卓手机软件自动运行插件的开发流程 1、明确需求与目标 在开发安卓手机自动运…