nginx的应用部署nginx

这里写目录标题

  • nginx
      • nginx的优点
      • 什么是集群
      • 常见的集群
      • 什么是正向代理、反向代理、透明代理
        • 常见的代理技术
        • 正向代理
        • 反向代理
        • 透明代理
    • nginx部署

nginx

nginx(发音同enginex)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
nginx作为负载均衡服务器:nginx既可在内部直接支持和PHP程序对外进行服务,也可支持作为HTTP代理服务器对外进行服务。

nginx的优点

高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数
内存消耗少
配置文件非常简单:风格跟程序一样通俗易懂
成本低廉:nginx为开源软件,可以免费使用。
支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组
内置的健康检查功能:如果NginxProxy后端的某台Web服务器宕机了,不会影响前端访问
节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头
稳定性高:用于反向代理,宕机的概率微乎其微
模块化设计:模块可以动态编译 外围支持好:文档全,二次开发和模块较多
支持热部署:可以不停机重载配置文件 支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化

什么是集群

集群:就是一组相互独立的计算机,通过单一的系统模式进行管理,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,它们作为整体向用户提供一组网络资源,当用户请求集群系统时,集群给用户的感觉就是一个单独的服务器,而实际上用户请求的是一组集群服务器。

简单来讲就是指多台服务器合作做同一件事

举个例子:

像常见的,我们打开谷歌,百度的搜索页面,它们的页面看着很简单,觉得可以很轻松的制作出一样的网页,但实际上,这个页面背后是成百上千台服务器也就是集群协同工作的结果。

常见的集群

负载均衡集群

​ 硬件:F5

​ 软件:nginx、lvs、haproxy、slb

高可用集群

​ 软件: keepalived、heartbeat、slb

高性能集群

什么是正向代理、反向代理、透明代理

常见的代理技术
  • 正向代理:Forward Proxy
  • 反向代理:Reverse proxy
  • 透明代理:Transparent proxy

区别:

  • 正向代理代理的对象是客户端,反向代理代理的对象是服务端
正向代理

一般情况下,如果没有特别说明,代理技术默认说的是正向代理。正向代理由如下两种场景:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正向代理是一个位于客户端【User A】原始服务器【Origin Server】之间的代理服务器【Forward Proxy】,为了从原始服务器取得内容,客户端代理服务器发送一个请求并指定目标Origin Server,然后代理服务器Origin Server转交请求并将获得的内容返回给客户端

代理服务器可能在内网也可以在外网。一般客户端需要特殊的配置才能使用。
作用

  1. 客户端【User A】无法直接访问原始服务器【Origin Server】
  2. 加速访问原始服务器【Origin Server】
  3. Cache作用
  4. 客户端访问授权
  5. 隐藏访问者的行踪

软件

  1. 科学上网工具 shadowsocks
  2. squid
  3. trafficserver
反向代理

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

客户端【User A】反向代理【Reverse Proxy】发送请求,接着反向代理将判断向哪个原始服务器【Origin Server】转交请求,并将获得的内容返回给客户端。

作用

  1. 保护和隐藏原始资源服务器
  2. 负载均衡,CDN实现原理

软件

  1. nginx
  2. trafficserver
透明代理

透明代理将拦截客户端【User A】发送的请求,拦截后自己代为访问原始服务器【Origin Server】,获取响应结果后再由透明代理交给客户端。一般公司内的上网行为管理软件就是透明代理。透明代理客户端根本不需要知道有代理服务器的存在。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

nginx部署

安装nginx:https://nginx.org/en/download.html

安装nginx
关闭防火墙创建系统用户nginx
[root@zyq ~]#: useradd -r -M -s /sbin/nologin nginx
[root@zyq ~]#: id nginx
uid=991(nginx) gid=991(nginx) groups=991(nginx)安装编译工具
[root@zyq ~]#: yum -y install make gcc gcc-c++安装依赖包
[root@zyq ~]#: yum -y install pcre-devel openssl openssl-devel gd-devel创建日志存放目录
[root@zyq ~]#: mkdir -p /var/log/nginx
[root@zyq ~]#: chown -R nginx.nginx /var/log/nginx下载nginx
[root@zyq ~]#: wget https://nginx.org/download/nginx-1.24.0.tar.gz
--2024-01-15 15:39:30--  https://nginx.org/download/nginx-1.24.0.tar.gz
Resolving nginx.org (nginx.org)... 52.58.199.22, 3.125.197.172, 2a05:d014:edb:5702::6, ...
Connecting to nginx.org (nginx.org)|52.58.199.22|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1112471 (1.1M) [application/octet-stream]
Saving to: ‘nginx-1.24.0.tar.gz’nginx-1.24.0.tar.gz    100%[=========================>]   1.06M   441KB/s    in 2.5s    2024-01-15 15:39:33 (441 KB/s) - ‘nginx-1.24.0.tar.gz’ saved [1112471/1112471][root@zyq ~]#: ls
anaconda-ks.cfg  nginx-1.24.0.tar.gz
[root@zyq ~]#: 
[root@zyq ~]#: tar xf nginx-1.24.0.tar.gz 
[root@zyq ~]#: cd  nginx-1.24.0/
[root@zyq nginx-1.24.0]#: ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src编译安装
[root@zyq nginx-1.24.0]#: ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log
[root@zyq ~]#: make && make install[root@zyq ~]#: cd /usr/local/
[root@zyq local]#: ls
bin  etc  games  include  lib  lib64  libexec  nginx  sbin  share  src
[root@zyq local]#: ls nginx/
conf  html  logs  sbin配置环境变量
[root@zyq ~]#: echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
[root@zyq ~]#: source /etc/profile.d/nginx.sh 
[root@zyq ~]#: which nginx
/usr/local/nginx/sbin/nginx启动nginx
[root@zyq ~]#: nginx
[root@zyq ~]#: ss -antl
State     Recv-Q    Send-Q       Local Address:Port       Peer Address:Port   Process    
LISTEN    0         128                0.0.0.0:22              0.0.0.0:*                 
LISTEN    0         511                0.0.0.0:80              0.0.0.0:*                 
LISTEN    0         128                   [::]:22                 [::]:*                服务控制方式,使用nginx命令-t  //检查配置文件语法-v  //输出nginx的版本-c  //指定配置文件的路径-s  //发送服务控制信号,可选值有{stop|quit|reopen|reload}设置开机自启
[root@zyq ~]#: cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/nginx.service
[root@zyq ~]#: vim /usr/lib/systemd/system/nginx.service
[root@zyq ~]#: cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx server daemon
After=network.target sshd-keygen.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecReload=/bin/kill -HUP $MAINPID[Install]
WantedBy=multi-user.target
[root@zyq ~]#: systemctl daemon-reload 
[root@zyq ~]#: systemctl status nginx
○ nginx.service - nginx server daemonLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: dis>Active: inactive (dead)[root@zyq ~]#: nginx -s stop 
[root@zyq ~]#: ss -antl
State     Recv-Q    Send-Q       Local Address:Port       Peer Address:Port   Process    
LISTEN    0         128                0.0.0.0:22              0.0.0.0:*                 
LISTEN    0         128                   [::]:22                 [::]:*                 
[root@zyq ~]#: systemctl enable --now nginx.service 
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
[root@zyq ~]#: ss -antl
State     Recv-Q    Send-Q       Local Address:Port       Peer Address:Port   Process    
LISTEN    0         128                0.0.0.0:22              0.0.0.0:*                 
LISTEN    0         511                0.0.0.0:80              0.0.0.0:*                 
LISTEN    0         128                   [::]:22                 [::]:*           

在这里插入图片描述

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

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

相关文章

「Java开发指南」如何用MyEclipse搭建GWT 2.1和Spring?(一)

本教程将指导您如何生成一个可运行的Google Web Toolkit (GWT) 2.1和Spring应用程序,该应用程序为域模型实现了CRUD应用程序模式。在本教程中,您将学习如何: 安装Google Eclipse插件为GWT配置一个项目搭建从数据库表到一个现有的项目GWT编译…

C++ 模拟实现 priority_queue(优先队列)

目录 一,优先队列简介 二,priority_queue 的内部实现原理 三,模拟实现 priority_queue 1,模板参数与数据结构 2,构造 3,辅助功能(堆的有序化,建立堆) 4&#xff0…

AcWing 4993 FEB

4993. FEB - AcWing题库 大佬亲笔 将原串分成三段&#xff1a; FFF|E.....B|FFF 先合并中间段&#xff0c;再合并两边的段 #include <iostream> #include <cstring> #include <algorithm> #include <string> #include <queue&g…

STM32--LoRa通信模块

ATK-LORA-01_V3.0(V3.0 是版本号&#xff0c;型号是 ATK-LORA-01 &#xff0c;下面均以 ATK-LORA-01表示该产品) 是 ALIENTEK 推出的一款体积小、微功率、低功耗、高性能远距离 LORA 无线串口模块。模块设计是采用高效的 ISM 频段射频 SX1278 扩频芯片&#xff0c;模…

GaussianBody:基于3D高斯散射的服装人体重建

GaussianBody: Clothed Human Reconstruction via 3d Gaussian Splatting GaussianBody&#xff1a;基于3D高斯散射的服装人体重建 Mengtian Li1,2,3, Shengxiang Yao1, Zhifeng Xie1,3,2, Keyu Chen4,2, Yu-Gang Jiang2 李梦田 1,2,3 、姚胜祥 1 、谢志峰 1,3, 2 、陈科宇 4, …

TriCore: 从RTOS内核的角度看CSA

今天尝试从RTOS内核的角度来看看 TriCore 的 CSA。 CSA的细节信息可以参考前一篇文章 TriCore User Manual 笔记 1-CSDN博客 CSA 的全称是 Context Save Area&#xff0c;顾名思义就是专门用来保存上下文的一块存储区域。 既然是上下文使用&#xff0c;那必然要求低延迟&…

Linux域名解析

1.hosts:windows c盘下面 Linux: /etc/hosts 作用:实现名字解析&#xff0c;主要为本地主机名、集群节点提供快速解析。平面式结构&#xff0c;集中式数据库。 缺点:不便于查询更新 2.DNS:域名系统 作用:实现名字解析(分层性&#xff0c;层次性) FQDN:完全合格域名/全称域…

开源离线AI笔记应用

前言 Reor 是一款人工智能驱动的桌面笔记应用程序&#xff0c;它能自动链接相关笔记、回答笔记中的问题并提供语义搜索。所有内容都存储在本地&#xff0c;支持 Windows、Linux 和 MacOS。Reor 站在 Ollama、Transformers.js 和 LanceDB 等巨头的肩膀上&#xff0c;使 LLM 和嵌…

基于Springboot的校园悬赏任务平台(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园悬赏任务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

ANSI转义序列

一、ASCII码 ASCII&#xff08;American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09;最初的设计是一个7位的字符编码&#xff0c;使用了从0到127的数字来表示字符。这意味着它总共可以表示128个不同的字符。这包括了英文大小写字…

如何从未入库的gerrit中撤销一个文件

用一个例子说明 比如有一个提交里面的default.xml的修改没有必要&#xff0c;需要从未入库的gerrit中移除 步骤如下&#xff1a; 1.做reset操作 git reset HEAD^ packages/SettingsProvider/res/values/defaults.xml 2.做checkout操作 git checkout packages/SettingsProv…

FileLink文件摆渡技术解析:如何实现数据的安全摆渡与隔离

文件摆渡系统&#xff0c;这一现代科技名词&#xff0c;蕴含着深刻的科技内涵和广泛的应用前景。简而言之&#xff0c;文件摆渡系统是一种高效、安全的文件传输工具&#xff0c;它能够在不同的网络环境之间实现文件的快速、稳定传输。在今天的数字化时代&#xff0c;随着数据量…

压缩机继电器EOCRDS-30NY7Q升级后型号:EOCRDS3-30S

EOCR-DS3系列型号&#xff1a; EOCRDS3-05S EOCRDS-05S EOCRDS1-05S EOCRDS3-30S EOCRDS-30S EOCRDS1-30S EOCRDS3-60S EOCRDS-60S EOCRDS1-60S EOCRDS3-05W EOCRDS-05W EOCRDS1-05W EOCRDS3-30W EOCRDS-30W EOCRDS1-30W EOCRDS3-60W EOCRDS-60W EOCRDS1-60W EOCR-DS3T-…

【递归、回溯和剪枝】二叉树中的深搜

⼆叉树中的深搜深度优先遍历&#xff08;DFS&#xff0c;全称为 Depth First Traversal&#xff09;&#xff0c;是我们树或者图这样的数据结构中常⽤的⼀种遍历算法。这个算法会尽可能深的搜索树或者图的分⽀&#xff0c;直到⼀条路径上的所有节点都被遍历完毕&#xff0c;然后…

数据结构的堆(c语言版)

一.堆的概念 1.堆的基本概念 在计算机科学中&#xff0c;堆是一种特殊的数据结构&#xff0c;通常用于实现优先队列和动态分配内存。 2.堆的特征 堆是一个完全二叉树&#xff0c;它具有以下两个主要特性&#xff1a; 堆序性&#xff1a;对于最大堆&#xff0c;在堆中的任意节…

RockChip Android13 添加/删除ListPreference方法

概述: 本章将讲述在Android添加或删除ListPreference的几种方法,并以EthernetSettingsActivity为例,添加/删除一项ListPreference: 默认效果图: 添加后效果图: 方法一: 1、全部添加xml 在Activity类中使用addPreferencesFromResource()方法解析XML文件并添加Prefere…

glog的编译和使用

文章目录 glog的编译和使用概述笔记测试工程glog0.7这个版本是有问题的工程的预处理宏日志测试代码好使的代码效果备注 - 只有C风格的日志才好使备注 - glog用不到gflagEND glog的编译和使用 概述 想在DLL中打些日志&#xff0c;测试用。 没用起来。 将gflags和gtest都测试编…

离开大厂创业一年,从未受过这么大的打击!

大家好&#xff0c;我是程序员鱼皮。时间过得真快呀&#xff0c;转眼间我从腾讯出来、自主创业竟然已经整整一年了&#xff01;上周末也带团队同学们搞了场公司周年庆团建。 我自己是一个很喜欢、也很注重复盘总结的人&#xff0c;这么重要的时间&#xff0c;当然要对过去的一…

预测市场?预测股票?如何让预测有更高的准确率?

我们发现在足球赛中&#xff0c;只要知道一个简单的讯息&#xff08;主队过去的获胜机率超过一半&#xff09;&#xff0c;预测力就会明显好过随便乱猜。如果再加上第二个简单的讯息&#xff08;胜负纪录较佳的队伍会略占优势&#xff09;&#xff0c;可以再进一步提升预测力。…

Centos固定静态ip地址

这里我用的是Vmware虚拟机搭建的三台机器 进入 cd /etc/sysconfig/network-scripts然后使用 ip addr命令&#xff0c;查看自己虚拟机的以太网地址。 我这里是ens33 上面的第一个选项是本地环回地址&#xff0c;不用管它 然后查看刚刚进入的network-scripts目录下的文件 找到…