Linux之安装Nginx

目录

  • 传送门
  • 前言
  • 一、快速安装
  • 二、反向代理语法
    • 1、基本语法
    • 2、location语法
      • 1. 基本语法
      • 2. 匹配规则
      • 3. 修饰符
      • 4. 权重
      • 5. 嵌套`location`
      • 6. 其他指令
      • 7.案例
  • 三、配置反向代理

传送门

SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口

前言

下面文章不定期更新中。。。

Linux安装JDK17(精品)
Linux安装MySQL(精品)
Linux安装Nginx
Linux安装Maven
运行一个jar包

Jenkins安装启动(JDK8/11/17)
Jenkins配置(插件/角色/凭证)
Jenkins的jdk和maven配置
Jenkins三种构建类型

Nginx主要有反向代理、负载均衡、动静分离三大核心功能,由于现在微服务的流行,微服务体系自己可以非常好的搞定负载均衡,所以Nginx很少用于负载均衡了,由于动静分离企业级使用也不是太多,至少笔者在的几家公司都没有使用。所以Nginx现在主要用于反向代理了。比如:一个域名,www.test.com; 下面要下设很多个服务器,用Nginx可以轻松实现:
www.test.com/a 对应 ip地址1:端口1
www.test.com/b 对应 ip地址2:端口2
在这里插入图片描述

一、快速安装

笔者的一台Linux服务器的版本是Alibaba Cloud Linux 3.2104 LTS 64位,类似CentOS8/Red Hat Enterprise Linux 8 / Oracle Linux 8 版本。

sudo dnf install nginx  # 安装Nginx,dnf是yum的后继者,这里也可以用yum,一路y
sudo systemctl start nginx # 启动Nginx服务,如果启动失败,可以cat  /var/log/nginx/error.log # 查看Nginx错误日志,查看错误信息。比如nginx默认的nginx.conf配置是80端口,看是否被占用。
sudo systemctl enable nginx # 设置Nginx开机自启
#sudo systemctl restart nginx # 重启Nginx服务
#sudo  systemctl status nginx.service # 查看Nginx服务
#sudo systemctl stop nginx # 停止Nginx服务
#ps -ef |grep nginx 也可以  kill -9  xxx(kill master和worker两个进程)find / -name nginx.conf # 查找nginx.conf配置文件,通常位于  /etc/nginx/nginx.conf
nginx -t # nginx -t命令测试配置文件的正确性,在任何目录下都可以测试。
cat  /var/log/nginx/access.log # 查看Nginx日志
cat  /var/log/nginx/error.log # 查看Nginx错误日志

二、反向代理语法

1、基本语法

在NGINX中配置反向代理非常简单,以下是一个基本的NGINX反向代理配置的语法示例:

server {listen 80;  # 监听端口号server_name example.com;  # 指定服务器名,可以是域名或IP地址location / {proxy_pass http://backend_server;  # 指定后端服务器的地址proxy_set_header Host $host;  # 设置代理请求头中的Host字段proxy_set_header X-Real-IP $remote_addr;  # 设置代理请求头中的X-Real-IP字段proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 设置代理请求头中的X-Forwarded-For字段proxy_set_header X-Forwarded-Proto $scheme;  # 设置代理请求头中的X-Forwarded-Proto字段}
}

在上面的示例中:

  • listen指令用于指定NGINX监听的端口号。
  • server_name指令用于指定访问该NGINX服务器的域名或IP地址。
  • location / {}块定义了NGINX对请求的处理规则,/表示匹配所有请求。
  • proxy_pass指令用于指定要代理到的后端服务器的地址。
  • proxy_set_header指令用于设置传递给后端服务器的请求头内容,确保正确传递客户端的信息。

除了上述基本的反向代理配置语法外,NGINX还提供了更多高级的配置选项,如负载均衡、缓存控制、HTTPS支持等。根据具体的需求,可以灵活地配置NGINX来满足不同的反向代理需求。

在实际应用中,你可以根据自己的需求和后端服务的特点进行相应的调整和扩展,以实现更复杂和灵活的反向代理配置。如果需要更多帮助或针对特定情况的配置建议,请提供更多详细信息,我将尽力为你提供支持。
在这里插入图片描述
默认的NGINX配置,监控80端口,但是server_name没有配置。
server_name+listen就是浏览器访问的地址,对外暴露的真实地址。后面配置的location,就是内部服务器对应的地址了,可以是域名,可以是内网IP地址,可以是内部jar包的某个网页或者接口。

2、location语法

在NGINX配置中,location指令用于指定匹配请求的URL路径,并定义对这些请求的处理规则。location块可以包含一系列指令,用于配置NGINX对特定URL路径的处理方式。以下是关于NGINX中location指令的一些常见用法和语法:

1. 基本语法

location /path {# 指定对特定路径/path的处理规则
}

2. 匹配规则

  • 精确匹配:使用=前缀来进行精确匹配

    location = /path {# 仅匹配精确路径/path
    }
    
  • 正则表达式匹配:使用~前缀表示区分大小写的正则表达式匹配,~*前缀表示不区分大小写的正则表达式匹配

    location ~ /path/regex {# 使用正则表达式匹配路径
    }
    

3. 修饰符

  • 限制请求方法:使用=修饰符限制请求方法

    location = /path {limit_except GET {deny all;}
    }
    
  • 内容重定向:使用@符号定义命名的位置并在需要时进行内部重定向

    location /path {try_files $uri $uri/ @named_location;
    }location @named_location {# 内部重定向到命名位置
    }
    

4. 权重

  • 权重匹配:使用=修饰符定义权重,数字越小,优先级越高
    location = /path {# 优先级最高
    }location = /path2 {# 优先级其次
    }
    

5. 嵌套location

location块可以嵌套,实现更复杂的匹配规则和处理逻辑。

location / {location /images {# 处理/images路径下的请求}location /videos {# 处理/videos路径下的请求}
}

6. 其他指令

除了上述示例中的用法外,location块还可以包含其他一些指令,如proxy_passroottry_files等,用于定义NGINX对请求的具体处理方式。

总之,location指令是NGINX配置中非常重要的一部分,它允许你灵活地定义对不同URL路径的请求的处理规则,从而实现各种复杂的网站和应用程序的需求。通过合理的使用location指令,可以实现对不同请求路径的定制化处理,满足各种复杂的需求。

7.案例

在这里插入图片描述

三、配置反向代理

修改/etc/nginx/nginx.conf文件时,强烈建议先备份一份,例如 :/etc/nginx/nginxbackup.conf

cp  /etc/nginx/nginx.conf /etc/nginx/nginxbackup.conf # 备份
vim /etc/nginx/nginx.conf # 修改nginx.conf 

在这里插入图片描述
笔者有一个主域名:http://wwwfe517.com,然后一台服务器,服务器上面部署了两个jar包,分别是8081端口和8082端口,想让浏览器访问 http://wwwfe517.com 走向8082端口的jar包服务,访问
http://wwwfe517.com/my 走向8081端口的jar包服务。所以走向8082用了回环地址127.0.0.1,是因为nginx和8082的jar包在同一台服务器上面,类似请求转发,本质是一次浏览器请求。走向8081用了重定向外网地址www517.com,这里为什么不用回环,是因为重定向的本质是两次请求,再次请求一次重定向后的地址,如果用内网地址是无法在公网支撑二次请求的。

下面为一个server的内容:

    server {listen       80;listen       [::]:80;server_name  http://wwwfe517.com;root         /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location /my {rewrite ^/my(.*)$ http://wwwfe517.com:8081$1 permanent;}location  / {proxy_pass http://127.0.0.1:8082;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}
nginx -t # nginx -t命令测试配置文件的正确性,在任何目录下都可以测试。
sudo systemctl restart nginx # 重启Nginx服务

额外扩展:

一般主流做法是主域名划分多个子域名,然后去配置多个server。比如 wwwfe517.com是主域名,
可以用a.wwfe517.com对应a子域名,b.wwwfe517.com对应b子域名。

server {listen 80;server_name wwwfe517.com;location / {# 配置 wwwfe517.com 的处理逻辑proxy_pass http://127.0.0.1:8082;}
}server {listen 80;server_name a.wwwfe517.com;location / {# 配置 a.wwwfe517.com 的处理逻辑proxy_pass http://127.0.0.1:8083;}
}server {listen 80;server_name b.wwwfe517.com;location / {# 配置 b.wwwfe517.com 的处理逻辑proxy_pass http://127.0.0.1:8084;}
}

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

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

相关文章

Java 海报-基于Graphics2D 实现个人头像的圆形裁剪

效果: 代码: private static BufferedImage resizeAndClipToCircle(BufferedImage image, int size) {// 缩小图片BufferedImage resizedImage new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB);Graphics2D g2d resizedImage.createGraphi…

5.组合与继承

1.面向对象 在C中,面向对象(Object-Oriented)是一种程序设计范式,它使用“对象”来设计应用程序和软件。面向对象编程(OOP)的核心概念包括类(Class)、对象(Object&#x…

方便快捷!使用Roboflow进行数据增强(附详细操作)

最近使用自定义数据集训练yolov8模型的时候突然发现一件很令人头疼的事情。那就是,数据集中图片太少了。于是想通过数据增强的方法扩大数据集。 通过查阅资料发现,大部分人都是用python中的imgaug库进行图像处理;这种方法最大的不便就是需要转…

如何通过需求跟踪矩阵加强需求管理?

需求跟踪矩阵是强化需求管理的有效工具,它能直观地展示需求与项目各阶段产出物之间的映射关系,确保每个需求从提出到最终实现都得到严密的跟踪与控制,从而提高需求质量和开发效率,保障项目顺利交付。 如果没有需求跟踪矩阵&#x…

【Elasticsearch】Elasticsearch 从入门到精通(二):基础使用

《Elasticsearch 从入门到精通》共包含以下 2 2 2 篇文章: Elasticsearch 从入门到精通(一):基本介绍Elasticsearch 从入门到精通(二):基础使用 😊 如果您觉得这篇文章有用 ✔️ 的…

用Python将原始边列表转换为邻接矩阵

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在图论和网络分析中,图是一种非常重要的数据结构,它由节点&#xff…

【AI开发:音频】一、GPT-SoVITS整合工具包的部署问题解决(GPU版)

前言 目前GPT-SoVITS的合成效果比较不错,相比较其他厂商的产品要规整的多。众多厂家中也是国内使用最多的一款了,并且这个整合包里携带了,除背景音、切割、训练、微调、合成、低成本合成等一些列完整的工具,也可以作为API进行使用…

StartAI智能绘图软件出现“缺少Python运行库”怎么办?

StartAI做为一款国产AI界的新秀,是一款贴合AIGC新手的智能绘图软件。新手安装遇见“缺少Python运行库”怎么办”?小编一招搞定~ 解决方法:手动下载【resource文件】,将文件添加到安装目录下。 点击链接进行手动下载噢~ 确保 Star…

React首次加载渲染2次的问题

在开发React项目的时候,发现useEffect会调用2次的情况,依赖数组明明没有变化,怎么会调用2次?百思不得其解,依赖没变化的话,那肯定是整个组件重渲染了。 最最简单的代码如下: const container …

【抽代复习笔记】14-群(八):变换群中的旋转、位似、平移变换群

定理1:集合A上的所有一一变换的集合G关于变换的乘法(复合)作成群。 证:首先,恒等变换ɛ:A→A(ɛ(x) x)是集合A上的一一变换,所以ɛ∈G,即G≠∅; ①对任意的f,g∈G,由映…

AI人工智能培训老师叶梓:大数据治理的关键工具:开源数据血缘分析系统

在大数据时代,数据的产生和传播速度日益加快,数据之间的关系也变得日益复杂。为了更好地管理和理解数据之间的关系,数据血缘分析系统应运而生。本文将介绍几个开源的数据血缘分析系统,它们在数据治理、数据质量管理和数据隐私保护…

ragflow 大模型RAG知识库使用案例

参考: https://github.com/infiniflow/ragflow/blob/main/README_zh.md 支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据, 网页等。 运行步骤: 1、确保 vm.max_map_count 不小于 262144 【更多】: 如需确认 vm.…

ThingsBoard服务端使用RPC通过网关给设备发送消息

一、概述 1、发送服务器端网关RPC 二、案例: 1、建立设备与网关之间的通讯 2、查看设备和网关是否在线状态啊 3、通过 仪表盘,创建设备A的模拟RPC调用的窗口链接 4、在客户端的网关设备上订阅RPC网关的主题信息 5、通过服务端的窗口,发…

uni-app开发canvas绘图画画,如何实现后退功能

在uni-app中使用canvas进行绘图时,实现后退功能通常意味着你需要保存用户的每一步操作,然后提供一个机制来撤销最近的步骤。下面是一个基本的实现思路: 保存绘图步骤: 每当用户在canvas上绘制时(比如通过touchMove事件…

python 对图片进行操作

Pillow是一个强大的图像处理库,它提供了许多用于打开、操作和保存图像的功能。 Image模块: Image模块提供了用于打开、创建、编辑和保存图像的基本功能。可以使用Image.open()函数来打开图像文件,或者使用Image.new()函数来创建新的图像,还可…

深度剖析Gateway在微服务治理中的关键角色

目录 一、多层网关 二、Gateway 路由规则 2.1 路由 2.2 谓词 2.3 过滤器 三、路由声明规则 3.1 谓词 寻址谓词 请求参数谓词 时间谓词 自定义谓词 一、多层网关 首先我们先了解下一个请求是如何到达服务端并得到相应的。过程如图所示: 首先网址解析的第一步是 DN…

设计模式学习笔记 - 开源实战四(中):剖析Spring框架中用来支持扩展的设计模式

概述 上篇文章,学习了 Spring 框架背后蕴含的设计思想,比如约定优于配置、低侵入松耦合、模块化轻量级等等。这些设计思想可以借鉴到其他框架开发中,在大的设计层面提高框架的代码质量。 除了上篇文章降到的设计思想,实际上&…

CSS特效---环形进度条

1、演示 2、一切尽在代码中 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"w…

炉管设备的内部构造详解

知识星球&#xff08;星球名&#xff1a;芯片制造与封测社区&#xff09;里的学员问&#xff1a;炉管设备&#xff08;立式&#xff09;的内部构造是怎样的&#xff1f; 如上图&#xff0c;是一个典型的&#xff1a; 上半部&#xff1a; Heating Element&#xff08;加热线圈…

树莓派使用总结

手上拿到了一块Raspberry Pi 4B板子。研究一下怎么用。 安装系统 直接到官网【Raspberry Pi 】下载在线安装助手 安装好后&#xff0c;打开软件&#xff0c;选择好板子型号、系统、TF卡&#xff0c;一路下一步就行。 树莓派接口 直接查看官方的资料【Raspberry Pi hardwar…