nginx详解

2023-09-21 22:22:54

目录

1  什么是nginx

2 Nginx功能

2.1 正向代理

2.2 反向代理

2.3 负载均衡

2.4 动静分离

3 区别

4 Docker 安装nginx

5 nginx配置文件介绍

1  什么是nginx

        nginx是一个高性能的http和反向代理服务器,特点是占有内存少、并发能力强,事实上nginx的并发能力的确在同类的服务器中表现较好。

nginx转为性能优化开发,性能是其最重要的考量。实现上非常注重于效率。有报表指出其能支持高达50000个并发连接数。

2 Nginx功能

2.1 正向代理

正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。

Nginx不仅可以做反向代理,实现负载均衡,还能够用正向代理进行上网等功能。

 如果想要访问局域网外的资源,则需要通过代理服务器来访问,这种代理服务称为正向代理。像:访问外网时用到的vpn

2.2 反向代理

反向代理:反向代理其实是以一个代理服务器来接收客户端的请求,然后将请求转发给内部的服务器,从而将服务器上得到的结果返还给客户端,此时代理服务器对外表现就是一个反向代理服务器。

比如:平时在开发的时候,浏览器请求的地址不是我们后端服务器上真正的IP地址,而是nginx上服务器的地址,然后再由nginx转发到真正的服务器上。这个时候nginx其实就是一个反向代理服务器。

2.3 负载均衡

        单个服务解决不了,我们增加服务器的数量,通过反向代理服务器将请求分发给各个服务器上,将原先的请求集中到单个服务器上的情况改为请求到多个服务器,将负载分发到不同的服务器上,也就是所说的负载均衡。

2.4 动静分离

        加快网站的解析速度,可以把动态页面和静态页面由不同的服务器解析,加快解析速度,降低原来单个服务器的压力

3 区别

        正向代理服务器和反向代理服务器都是介于客户端和服务端之间,所做的事情也是将客户端的请求转发给服务器,再把服务器的响应转发给客户端,但是二者之间还是有区别的。

1 正向代理其实是客户端的代理,帮助客户端访问其无法访问服务器的资源。反向代理是服务器的代理,帮助服务器做负载均衡和安全防护。

2 正向代理服务器都是客户端架设的,比如在自己电脑上安装一个电脑软件。反向代理是服务器架设的,比如在自己机器集群中部署一个反向代理服务器。

3 正向代理服务器不知道真正的客户端是谁,以为访问自己的就是真实的客户端。反向代理中,客户端不知道谁是真正的服务器,认为自己所访问的就是真正的服务器。

4 正向代理和反向代理的作用和目的不同,正向代理主要是用来解决访问限制的问题,而反向代理是用来提供负载均衡、安全防护等作用,二者皆能提高访问速度。

4 Docker 安装nginx

拉取镜像

docker pull nginx

创建挂载目录

启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf)是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件。

# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

运行一个nginx容器

# 生成容器

docker run --name nginx -p 9001:80 -d nginx

解释:在Docker中运行一个名为nginx的容器,以后台的形式运行。并将容器的80端口映射到主机的9001端口。这样你就可以通过访问http://localhost:9001来访问Nginx服务器。-d nginx表示 后台运行名为nginx的容器,-d是指在后台运行容器,不会显示容器的输出

 复制目录

# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

5 nginx配置文件介绍

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

		location / {
            root   /home/qiuguo/projects/qiuguo-ui;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
		
		location /prod-api/{
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://qiuguo-gateway:8080/;
		}

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

nginx配置文件中有三部分组成:

第一部分:全局块

从配置文件开始到events开始之间的内容,主要设置一些影响nginx服务器整体运行的指令,比如:worker_processes  1; worker_processes的值越大,可支持的并发数也越多,只不过会收到机器硬件的影响。

第二部分:events块

events块涉及的指令主要影响Ngiinx服务器与用户的网络连接,比如: worker_connections  1024;

第三部分:http块

nginx服务器中配置最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

注意:http块也包括http全局快和server块

http全局配置指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上线。

http块可以包含多个server块,而每个server块就相当于一个虚拟地址

更多推荐

golang入门笔记——pprof性能分析

文章目录简介runtime/pprof的使用命令行交互网络服务性能分析pprof与性能测试结合压测工具go-wrk简介golang性能分析工具pprof的8个指标1.性能分析的5个方面:CPU、内存、I/O、goroutine(协程使用情况和泄漏检查)、死锁检测以及数据竟态分析runtime.SetMutexProfi

天地图绘制区域图层

背景:业务方要求将原效果图参考效果图最终实现效果变更点:1.将原有的高德地图改为天地图2.呈现形式修改:加两层遮罩:半透明遮罩层mask+区域覆盖物mask实现过程:1.更换地图引入源<linkrel="stylesheet"href="https://cdn.jsdelivr.net/npm/maptalks/dis

IntelliJ IDEA使用——常规设置

文章目录版本说明主题设置取消检查更新依赖自动导入禁止importxxx.*、允许import内部类显示行号、方法分割线、空格代码提示(匹配所有字母)自定义注释颜色添加头部注释自定义字体设置字符编码关联本地GitJDK编译版本Maven配置Tomcat配置代码注释设置头部注释单行注释HTML和XML注释IDEA同步设置版

使用电力系统稳定器 (PSS) 和静态 VAR 补偿器 (SVC) 提高瞬态稳定性(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。📋📋📋本文目录如下:🎁🎁🎁目录💥1概述📚2运行结果🎉3参考文献🌈4Simulink仿真实现💥1概述电力系统稳定器(PSS)和静态VAR补偿器(S

tomcat敏感数据加密实现方案

1背景tomcat部署的SSM老项目,在tomcat的context.xml下配置了数据源信息,且部分敏感信息都是明文,这是一项严重的不安全因素。故需要将数据库密码这种敏感信息进行加密。2实现方案2.1继承重写工厂方法这种方法需要在原应用工程中添加扩展工厂类,用于处理tomcat配置文件中敏感信息。优点是不被tomca

VR全景拍摄:打破传统拍摄角度限制,营造全新体验

VR全景拍摄不仅仅是拍摄环境,更多的是展示意境,我们的传统文化就是讲究意境,仅仅是看一张清晰无比的图片,自然显得没有趣味,但是这种真实的视觉体验,明明不在现场却能直观体验现场场景,这种意境可以让人们更加深入地了解事物的本质。随着VR技术的普及,越来越多的人开始使用VR全景拍摄来展示自己的店铺,VR全景拍摄具备很好的视觉

Electron自动化测试技术选型调研

Electron简介Electron是一个开源的框架,用于构建跨平台的桌面应用程序。它由GitHub开发并于2013年首次发布。Electron允许开发人员使用Web技术(如HTML、CSS和JavaScript)来构建桌面应用程序,同时可以在Windows、macOS和Linux等操作系统上运行。以下是一些关键特点和

【广州华锐互动】煤矿坍塌VR事故警示教育突破了哪些限制?

煤矿坍塌事故是煤矿行业的一种常见事故,对于矿工的生命安全和生产设备都存在着严重威胁。传统的安全培训方式往往难以真实地呈现事故场景,难以达到理想的安全教育效果。而虚拟现实(VR)技术的出现,为煤矿安全教育带来了新的突破。本文将深入探讨,广州华锐互动所开发的煤矿坍塌VR事故警示教育系统所突破的限制,展现其在安全教育中的重要

STM32 USB CDC 虚拟串口

//用虚拟串口(USBCDCVCP)感觉有些不稳定,尤其是下位机掉电后再上电,上位机虚拟的那个串口根本不能用,还有就是//必须等虚拟串口出来后且知道串口号上位机才可以执行打开操作//上面是实际情况,但并不是STM32的USB不行,而是PC端的驱动程序有问题。或者说是PC机的驱动程序机制造成的。//如果是PC机正常的RS

K8s(Kubernetes)学习(五)——Service:ClusterIP、NodePort、LoadBalancer、 ExternalName

第五章Service什么是Service为什么需要ServiceService特性Service与Pod关联Servicetype类型如何使用Service多端口配置1什么是Service1.1定义官网地址:https://kubernetes.io/zh-cn/docs/concepts/services-netwo

2023/09/15 qt day2

完善登录框点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容"账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。如果账号和密码匹配,则弹出信息对话框,给出提示信

热文推荐