Linux之安装Nginx

news2024/11/25 0:01:53

目录

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

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

相关文章

食用油5G智能工厂数字孪生可视化平台,推进食品制造业数字化转型

食用油5G智能工厂数字孪生可视化平台,推进食品制造业数字化转型。在食用油产业中,数字化转型已成为提升生产效率、优化供应链管理、确保产品质量和满足消费者需求的关键。食用油5G智能工厂数字孪生可视化平台作为这一转型的重要工具,正在推动…

【来自理工科的独有浪漫-给crush一朵夏天的雪花】--对于有限差分法的理解

目录 有限差分法相关参考资料先上手看代码,然后理解数理概念有限差分法的理解Q: 什么是有限差分法? 代码中涉及的知识点1. 划分网格对于求解二维偏微分方程的作用2. 临近点对于求解偏微分方程的作用3. 有限差分方法中的中心差分公式 总结 写在前面&#…

喜报 | 一致认可!擎创科技连续6年获“鑫智奖”专家推荐TOP10优秀解决方案

为展示金融企业数据管理和数据平台智能化转型成果,分享大数据和人工智能在风控、营销、产品、运营等场景的落地实践,探讨“金融科技数据智能”的创新应用和未来发展,在全球金融专业人士协会的支持下,金科创新社主办了“鑫智奖第六…

Apple II首席设计师为中国家庭设计,鹿客指脉锁S6 Max引领科技美学

智能门锁设计正在步入一个科技与艺术交织的美学时代。鹿客科技认为,智能门锁的设计理念是将锁视为人类与仿生形状之间的接口,将门视为几何建筑的一部分,产品设计应该通过提供诱人且用户友好的“触摸和感觉”来传达这种转变。 鹿客近日发布的最…

(C语言入门)数组

目录 什么是数组? 数组: 数组的使用: 数组的初始化: 数组名: 数组案例: 一维数组的最大值: 一维数组的逆置: 数组和指针: 通过指针操作数组元素: …

springCloud集成activiti5.22.0流程引擎

springCloud集成activiti5.22.0流程引擎 点关注不迷路,欢迎再访! 精简博客内容,尽量已行业术语来分享。 努力做到对每一位认可自己的读者负责。 帮助别人的同时更是丰富自己的良机。 小编最近工作需要涉及到流程,由于网络上5.22版…

AD--SSL卸载--单向认证和双向认证

一.SSL卸载单向认证 1.添加SSL证书 2.添加SSL卸载策略 由于是测试模拟环境,有些效果表现不出来,配置不了卸载策略 3.起虚拟服务,服务类型选择https或者ssl ,选择SSL卸载策略 实验效果:打开网页进入AD抓包发现,客户端和…

MySQL及SQL语句

SQL语句 数据库相关概念数据查询语言(DQL)基本查询数据类型条件查询多表查询子查询 数据操作语言(DML)数据定义语言(DDL)数据控制语言(DCL)MySQL数据库约束视图练习题 数据库相关概念…

8【PS作图】画一个“像素云朵”

选择64*128像素大小,横向画布 选择“油漆桶”工具,“容差”调整为0,取消“锯齿”,勾选“连续的”,这样方便后续上色,并且边缘都是像素风格的锯齿状 点击画布,变成蓝色天空 画云朵,首…

win10环境中设置java开机自启动

1 、jdk环境确认 在开始设置Java开机启动之前,确保你的计算机已经安装了Java开发环境(JDK)。如果没有安装,你可以从Oracle官方网站下载并安装最新的Java开发工具包。 2、准备好jar程序 确认jar程序可以正常运行。 3、编写批处…

【InternLM】大模型的评测——OpenCompass

1. OpenCompass简介 1.1 基本介绍 大模型开源开放评测体系 “司南” (OpenCompass2.0)由上海人工智能实验室科学家团队发布,用于为大语言模型、多模态模型等提供一站式评测服务。其主要特点如下: 开源可复现:提供公平、公开、可复现的大模型…

聊聊实际工作中设计模式的使用

一直想在CSDN上写一篇关于软件设计模式的文章,草稿打了好久,但很长时间都没有想好该如何写,主要有几点考虑: 1、市面上同类的介绍实在太多了。正所谓第一个能够把美女比喻成鲜花的人是天才,第二个还这么说的是庸才&…

Kotlin语法入门-类与对象(6)

Kotlin语法入门-类与对象(6) 文章目录 Kotlin语法入门-类与对象(6)六、类与对象1、声明和调用2、get和set3、init函数初始化4、constructor构造函数4.1、主构造函数4.2、二级构造函数4.3、多个构造函数4.4、省略主构造函数并写了次构造函数 5、类的继承与重写5.1、继承5.2、继承…

【Tello无人机】无人机编队操作面板实现

为了方便进行无人机的编队演示,以及在各种场景下实现队形的灵活切换,开发了一套专门的上位机控制平台。本文将重点介绍应用于tello无人机的编队操作面板及其核心功能。 操作面板页面 下图展示了操作面板,其中包含5种编队动作和3个可选位置设…

2024深圳杯(东北三省)数学建模选题建议及各题思路来啦!

大家好呀,2024深圳杯数学建模(东北三省数学建模联赛)开始了,来说一下初步的选题建议吧: 首先定下主基调, 本次深圳杯(东北三省)建议选A。难度上D>B>C&#…

开源模型应用落地-chatglm3-6b-集成langchain(十)

一、前言 langchain框架调用本地模型,使得用户可以直接提出问题或发送指令,而无需担心具体的步骤或流程。通过LangChain和chatglm3-6b模型的整合,可以更好地处理对话,提供更智能、更准确的响应,从而提高对话系统的性能…

Linux中进程和计划任务管理(2)

一.进程命令 1.lsof lsof 命令,“list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件。通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。 格式&…

【详细实现】v1.0 随机点名应用

1.引言 前面对这个应用的功能做了详细的分析(长什么样、能干什么),以先这样对一个项目最开始的分析成为需求分析,需求分析之后就是设计阶段。 那么一般的项目,在设计阶段都需要干什么呢?在需求分析阶段确定…

Linux系统中安装MySQL

1、在电脑中安装虚拟机 2、df -h查看光盘是否挂载,没挂载用mount -o ro /dev/sr0 /media命令挂载 3、进入etc/yum.repos.d目录查看仓是否配置,若配置进行下一一步,未配置则进行配置 配置软件仓库 [rootlocalhost yum.repos.d]# vim rhle.r…

423 世界读书日 和京东零售技术人一起读好书

我们正处于一个复杂、变化的世界,想要更好地理解、适应它,读书可能是最方便的方式之一。 4 月 23 日世界读书日,我们整理了 10 位零售技术人的书籍推荐给大家,欢迎大家一起来共读好书。愿大家在忙碌工作之余,都能够持…