Linux之安装Nginx

news/2024/5/19 5:53:12

目录

  • 传送门
  • 前言
  • 一、快速安装
  • 二、反向代理语法
    • 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.mrgr.cn/p/67287141

相关文章

构建Python中的分布式日志系统:ELK与Fluentd的结合

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在现代软件开发中,日志系统是至关重要的组成部分。它们不仅用于故障排查和性能监…

Linux问题集合

Linux问题集合 1. Linux下如何定位死锁? 如果你想排查你的 Java 程序是否死锁,则可以使用 jstack 工具,它是 jdk 自带的线程堆栈分析工具。 在 Linux 下,我们可以使用 pstack + gdb 工具来定位死锁问题。 pstack 命令可以显示每个线程的栈跟踪信息(函数调用过程),它的使…

2023中国企业敏捷实践白皮书发布,免费下载

在人工智能技术飞速发展,组织面临的复杂性和多变性不断加剧的背景下,《2023中国企业敏捷实践白皮书》通过广泛的调查,洞察剧变之下,谁在逆流而上,如何逆流而上。《2023中国企业敏捷实践白皮书》发布!免费下载在人工智能技术飞速发展,组织面临的复杂性和多变性不断加剧的…

解决多线程竞争条件——临界区

如图所示,黑色表示没有获得CPU,绿色表示获得CPU,假设为单核两线程程情况。 线程1开始运行,并进入临界区,在出临界区运行过程中到了上下文切换时间。 线程2获得CPU,正常运行一段时间后需要运行至临界区代码,此时,线程1位于临界区。因为不能两个线程同时位于临界区,所以…

python爬虫—学习笔记-4

课堂内容:删除原导出文件的venv,pycham打开此文夹,重新创建本地虚拟编译器。安装依赖库,打开pycham终端输入pip install -r yilaiku.txt,安装依赖库中的库。继续安装bs4、lxml库,命令为:pip install bs4 和 pip install lxml。安装好后,pycham来到spiders目录下,新建Py…

【Hadoop】-Hive初体验[13]

Hive体验 预先确保已经完成部署Hive,并启动了Metastore服务 可以执行:bin/hive,进入到Hive Shell环境中,可以直接执行SQL语句。 创建表 create table test(id int,name string,gender string); 插入数据 INSERT INTO test val…

Linux引导过程与服务控制

Linux操作系统引导过程 排除启动类故障 服务控制及切换运行级别 优化启动过程 Linux引导过程 引导过程总览: 简化来说就是由开机自检 MBA引导 GRUB菜单 加载内核(kernel) init进程初始化等组成 Linux 操作系统的引导过程&…

SLICEM是如何将查找表配置为分布式RAM/移位寄存器的

1.首先说SliceM和SliceL如何配置为ROM的 一个SLICE包含4个六输入查找表,因此每个查找表就能存储64bit的数据,要实现128bit的ROM,只需要通过两个LUT就可实现,具体如下表: 2.如何配置成为分布式RAM SLICEM中的LUT如下图&#xff…

CSS-vminvmax单位

vmin 和 vmax 单位 vmin 是相对于视口宽度和高度中较小值进行计算,它的值为视口宽度和高度中的较小值的百分比。 例如,如果视口宽度为 800px,高度为 1000px,那么 1vmin 等于 8px(800px 的 1%)。 vmax 是相对于视口宽度和高度中较大值进行计算,它的值为视口宽度和高度中的…

Skill Check: Build an LLM Application using OCI Generative AI Service

Skill Check: Build an LLM Application using OCI Generative AI Service

循环购模式揭秘:消费即投资,边消费边赚钱的新商业模式

大家好,我是吴军,你们的私域电商管家。今天,我要为大家深入剖析一种新兴的商业模式——循环购模式。这个模式看似神奇,实则蕴含了消费返利和积分返利的智慧,让不少商家取得了惊人的业绩。那么,它究竟是如何…

前端开发攻略---实现发送手机验证码60s倒计时效果(手机号验证+按钮文字自定义显示+Vue2写法+Vue3写法)

1、演示 2、说明 1、为了便于演示,本示例将在3秒后就再次发送。您可以根据需要自定义此时间间隔。 2、采用最少的变量以满足需求,以减少内存占用。 3、不仅仅局限于按钮情况,也可应用于不禁用按钮的情况,以实现更多的扩展性。 4、…

【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView(图文并茂超详细版本)

往期回顾 【QT进阶】Qt Web混合编程之CEF、QCefView简单介绍-CSDN博客 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用(图文并茂超详细介绍)-CSDN博客【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客【QT进阶】Qt Web混合编程之VS2019 C…

前端优化体积

个别js比较大,可以异步加载 如果是js文件,创建<script>后onload触发

HarmonyOS NEXT应用开发—城市选择案例

本示例介绍城市选择场景的使用:通过AlphabetIndexer实现首字母快速定位城市的索引条导航。介绍 本示例介绍城市选择场景的使用:通过AlphabetIndexer实现首字母快速定位城市的索引条导航。 效果图预览使用说明 分两个功能在搜索框中可以根据城市拼音模糊搜索出相近的城市,例如…

网卡-模式标准

目前主流的无线WIFI网络设备一共有以下几种模式:802.11a是一种Wi-Fi标准,工作在5GHz频段,提供最高54Mbps的数据传输速率。虽然速度较快,但覆盖范围较小。802.11b是Wi-Fi的最初标准之一,工作在2.4GHz频段,提供最高11Mbps的数据传输速率。虽然速度较慢,但拥有较广的覆盖范…

Visual Studio常用快捷键

常用快捷方式 快捷键 功能 Ctrl + K + C 注释选定内容 Ctrl + K + U 取消注释选定内容 Ctrl + K + D 代码格式整个文档内容 Ctrl + K + F 格式化选定内容 F12 转到定义 Ctrl+F12 转到声明 Ctrl + - 后退 Ctrl + Shift + - 前进 Ctrl + M + O 折叠…

菜鸟Java面向对象 2. Java 重写(Override)与重载(Overload)

Java 重写(Override)与重载(Overload) Java 重写与重载 Java 重写(Override)与重载(Overload)1. 重写(Override)1. 概念解释&#xff1a;2. 好处说明3. 异常规则处理 2. 方法的重写规则3. Super 关键字的使用4. 重载(Overload)**重载规则:**实例 5. 重写与重载之间的区别总结 1…

.pro文件管理qt项目,快捷设置软件名称和版本号

效果: .cpp文件代码:{ui->setupUi(this);// 设置软件名称和版本号QString version = QCoreApplication::applicationVersion();QString name = QCoreApplication::applicationName();QString verInfo = " 快捷设置软件名称和版本号 - 版本:V" + version+ QStr…

Python字符串过滤器:正则表达式Regular Expression

一、什么是正则表达式 正则表达式是按照正确的既定规则、一种全语言类型Python、Java、JavaScript、PHP通用的表达式。 用途: (1)根据规则抓取数据:配合爬虫、根据规则在文本中提取数据 (2)根据规则验证数据:验证手机号、验证邮箱、验证身份证 二、如何在Python中使用正…