Nginx学习整理|入门记录

news2024/11/26 12:52:15

目录

1. Nginx概述

1.1  Nginx介绍

1.2 Nginx下载和安装

1.3 Nginx目录结构

2. Nginx命令

3. Nginx配置文件结构

4. Nginx具体应用

4.1 部署静态资源

4.2 反向代理

4.3 负载均衡


1. Nginx概述

       1.1  Nginx介绍

        Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

       1.2 Nginx下载和安装

安装方式一:官网下载上传至服务器安装

       1. 首先进入Nginx官网

Nginx官网https://nginx.org/        2. 按照如下操作,选择版本号进行下载即可;

        3. 点击下载后,就会生成一个压缩文件,将压缩文件导入到服务器上解压即可;

ps:手动安装的,建议参考博客

nginx 手动安装 及依赖包安装(pcre+zlib+openssl)http://t.csdn.cn/JUpbO

 安装方式二:在线安装Nginx

        因为本人是阿里云服务器,所以使用在线安装,安装过程如下:

        1. 首先安装Nginx所依赖的包

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

        2. 下载Nginx安装包

wget https://nginx.org/download/nginx-1.16.1.tar.gz

tap:

        在使用wget下载前,可以先测试是否安装了wget命令。如果出现以下错误:

-bash: wget: command not found

则可以使用以下命令来安装即可:

yum install wget

        3. 解压

tar -zxvf nginx-1.16.1.tar.gz

        4. 进入安装目录

cd nginx-1.16.1

        5. 配置安装目录

./configure --prefix=/usr/local/nginx

tap:需要提前创建目录:

mkdir -p /usr/local/nginx

        6. 编译并安装

make && make install

 安装成功示例:

        1.3 Nginx目录结构

安装完Nginx后,我们先来熟悉一下Nginx的目录结构,如表:

重点目录/文件
conf/nginx.confnginx配置文件
html存放静态文件(html、CSS、Js等)
logs 日志目录,存放日志文件
sbin/nginx二进制文件,用于启动、停止Nginx服务

tap:

        如果想在linux中让目录和文件以层级进行展示,则可以安装:

yum install tree

查看目录:

tree

2. Nginx命令

查看版本命令

./nginx -v

tap:使用上述命令,前提是先进入 /usr/local/nginx/sbin 目录下

[root@liustudy sbin]# ./nginx -v
nginx version: nginx/1.22.1

在启动Nginx服务之前,可以先检查一下conf/nginx.conf文件配置的是否有错误,命令如下:

./nginx -t
[root@liustudy sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

启动和停止

1. 启动Nginx服务使用如下命令:

./nginx

2. 停止Nginx服务使用如下命令:

./nginx -s stop

3. 启动完成后可以查看Nginx进程:

ps -ef | grep nginx

 4. 检查Nginx是否成功启动

[root@liustudy nginx]# cd html/

[root@liustudy html]# systemctl stop firewalld

[root@liustudy html]# cat index.html 
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

tap: 可使用命令可进入网页查看:

ip addr

 拿到inet后的地址:

注意:如果是云服务器,则直接使用云服务器的公网ip访问即可

重新加载配置文件

当修改Nginx配置文件后,需要重新加载才能生效,可以使用下面命令重新加载配置文件:

./nginx -s reload

配置Nginx到全局变量

1. 首先进入  /etc/profile 下修改path:

[root@liustudy html]# vim /etc/profile

2. 保存退出后,执行刷新命令

source /etc/profile

3. 测试Nginx全局命令

nginx -s reload

3. Nginx配置文件结构

Nginx配置文件(conf/nginx.conf)整体分为三部分

  • 全局块        和Nginx运行相关的全局配置
  • events块    和网络连接相关的配置
  • http块        代理、缓存、日志记录、虚拟主机配置
    • http全局块
    • Server块
      • Server全局块
      • location块

注意:http块中可以配置多个Server块,每个Server块中可以配置多个location块。

1. 首先进入conf文件夹
cd /usr/local/nginx/conf
2. 然后查看Nginx.conf文件夹
cat nginx.conf

4. Nginx具体应用

4.1 部署静态资源

        Nginx可以作为静态web服务器来部署静态资源。静态资源指在服务端真实存在并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。
        相对于Tomcat,Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。
        将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx安装目录下的html目录中即可。

例如:在nginx/html下创建hello.html

vim hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello Nginx!</title>
</head>
<body>
    <h1>Hello Nginx!</h1>
</body>
</html>

加载成功:

将默认首页替换:

         进入 /nginx/conf,找到nginx.conf文件,进行修改:

server {
    listen 80;	#监听端口	
    server_name localhost;	服务器名称
    location / {	#匹配客户端请求url
        root html;	#指定静态资源根目录
        index index.html;	#指定默认首页
    }
}

 重新启动Nginx:

nginx -s reload

4.2 反向代理

正向代理

  •         是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
  •         正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
  •         正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。

反向代理

        反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。
        用户不需要知道目标服务器的地址,也无须在用户端作任何设定。

应用实践

1. 配置反向代理

进入Nginx目录下,找到nginx.conf文件

 进入编辑:

vim nginx.conf

配置文件中除了默认的server外,还可以存在多个server,直接将下面这个复制到默认的server上面就可以了。

server {
    listen 82;
    server_name localhost;
    location / {
        proxy_pass http://192.168.138.101:8080; #反向代理配置,将请求转发到指定服务
    }
}

注意:这里的listen监听的端口号,云服务器需要在安全组里面放开。请求哪个服务器放开哪个服务器的端口,和转发的服务器的端口没有关系。 (访问A服务器,转发到B服务器,所以放开A的端口)。

2. B服务器运行项目

        下面是测试运行的jar项目,反向代理随便运行一个即可。

https://pan.baidu.com/s/1bJUZPM6vtRa_ux5SjKjwHA?pwd=4gg4
提取码:4gg4

 通过A服务器请求B服务器hello项目:

测试成功,nginx反向代理成功。

4.3 负载均衡

        早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。

  • 应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据
  • 负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理

 ps:个人感觉就是反向代理的加强版,可以通过一台服务器代理多台服务器,并且可以通过一定的算法进行请求分配,可以实现分流。

配置负载均衡:

  • upstream指令可以定义一组服务器
  • targetserver是自定义的组名
  • weight是权重,资源分配按这个比例分
  • 下面的配置和反向代理中的配置同样操作,都是在nginx.conf中操作
upstream targetserver{    #upstream指令可以定义一组服务器
    server 192.168.138.101:8080 weight=10;
    server 192.168.138.101:8081 weight=5;
}
server {
    listen       8080;
    server_name  localhost;
    location / {
        proxy_pass http://targetserver;
    }
}

负载均衡策略:

        配置中的weight参数可以替换成下列任意一种,使得请求分配更加符合项目需要。默认是轮询分配,每个服务器分配请求量相等。

名称说明
轮询默认方式

weight

权重方式

ip_hash

依据ip分配方式

least_conn

依据最少连接方式

url_hash

依据url分配方式

fair

依据响应时间方式

         学习记录,不断提升,如果有错误或者更好的方法,欢迎评论区指正修改!

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

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

相关文章

积分电路的并联电阻、反向放大电路的并联电容的区别?

运放反相比例放大电路中反馈电阻两端经常并联一个电容&#xff0c;而运放积分电路的反馈电容上常常并联一个电阻&#xff0c;两者电路结构相似&#xff0c;如下所示&#xff08;隐去阻容值&#xff09;&#xff0c;二者有何区别呢&#xff1f;电阻、电容分别又起到什么作用&…

Catboost

CatBoost简介 CatBoost是俄罗斯搜索巨头Yandex在2017年开源的机器学习库&#xff0c;是Boosting算法的一种&#xff0c;CatBoost和XGBoost&#xff0c;Lightgbm并称为GBDT三大主流神器&#xff0c;都是在GBDT算法框架下的一种改进实现&#xff0c;XGBoost是被广泛应用于工业界…

使用jstack解决线程爆满问题

问题发现生产应用现存在问题&#xff0c;影响到系统的使用&#xff0c;前端页面只配置了35个派生指标&#xff0c;后台任务生成20000多线程任务&#xff0c;占用了全部资源&#xff0c;导致其他系统也没资源可用&#xff0c;指标工厂也无法进一步使用&#xff0c;今天上午发的死…

Email Signature Manager 9.3 Crack

概述 Email Signature Manager为所有用户创建和部署电子邮件签名 包括合并的联系方式、公司徽标、社交媒体图标 和链接&#xff0c;甚至个性化内容&#xff0c;如用户照片 创建和附加电子邮件活动&#xff0c;向所有人介绍奖项&#xff0c; 活动或促销&#xff0c;或设置运行的…

基于STM32的FreeRTOS开发(1)----FreeRTOS简介

为什么使用freertos FreeRTOS 是一个免费和开源的实时操作系统&#xff0c;它主要用于嵌入式系统。它非常轻量级&#xff0c;可以在很小的硬件资源上运行&#xff0c;因此非常适合在限制硬件资源的嵌入式系统中使用。 FreeRTOS提供了一组简单的任务管理功能&#xff0c;可以让…

基于Springboot vue前后端分离在线培训考试系统源码

# 云帆培训考试系统 管理账号&#xff1a;admin/admin 学员账号&#xff1a;person/person # 介绍 一款多角色在线培训考试系统&#xff0c;系统集成了用户管理、角色管理、部门管理、题库管理、试题管理、试题导入导出、考试管理、在线考试、错题训练等功能&#xff0c;考…

C++:运算符重载与类的赋值运算符重载函数

目录 章节知识架构 一.运算符重载 1. 运算符重载的基本概念 代码段1 2.关于运算符重载的重要语法细则 二.运算符重载在类中的使用 三.类的默认成员函数&#xff1a;重载函数(赋值运算符重载) 1.自定义重载函数 代码段2 2.编译器默认生成的重载函数 四.前置(--)和后置…

Facebook小组与主页:哪个更适合SEO?

在 SEO中&#xff0c;对于优化人员来说有两种策略&#xff1a;一种是在 Facebook组上投放广告&#xff1b;另一种则是在主页上投放广告。那么&#xff0c;这两种策略哪种更好呢&#xff1f;对于 SEO来说又有什么影响呢&#xff1f;如果你已经在 Facebook上进行了一些优化工作&a…

Python---文件操作

专栏&#xff1a;python 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些python的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 文件操作思维导图前言文件是什么文件路径文件操…

SpringBoot基础回顾:场景启动器

上一章我们回顾了 SpringBoot 的自动装配&#xff0c;以及承载自动装配的核心——自动配置类。自动配置类的定义位置通常在每个场景的 jar 包中&#xff0c;配置 spring.factories 文件中 EnableAutoConfiguration 的位置通常在相应的 autoconfigure jar 包下。本章会着重回顾和…

SpringMVC简介

SpringMVC简介什么是MVC?MVC的工作流程什么是SpringMVC&#xff1f;HelloWorld创建maven工程配置web.xml创建请求控制器配置springMVC.xml配置文件什么是MVC? MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的javaBean,作用是是处理数…

恶意代码分析实战 9 隐蔽的恶意代码启动

9.1 Lab12-1 分析 查看程序的导入函数。 通过这几个函数&#xff0c;可以推断出是远程线程注入。 使用ProMon检测&#xff0c;并没有看到什么有用的信息。 使用Proexproer检查。 也没有什么有用的信息。 拖入IDA中分析一下。 将这几个字符串重命名&#xff0c;便于识别。 …

【MyBatis】| MyBatis使用⼩技巧

目录 一&#xff1a;MyBatis使用⼩技巧 1. #{}和${} 2. typeAliases 3. mappers 4. IDEA配置⽂件模板 5. 插⼊数据时获取⾃动⽣成的主键 一&#xff1a;MyBatis使用⼩技巧 1. #{}和${} #{}&#xff1a;先编译sql语句&#xff0c;再给占位符传值&#xff0c;底层是Prepar…

【C语言进阶】一文带你学会C语言文件操作

前言 我们前面学习结构体时&#xff0c;写了通讯录的程序&#xff0c;当通讯录运行起来的时候&#xff0c;可以给通讯录中增加、删除数据&#xff0c;此时数据是存放在内存中&#xff0c;当程序退出的时候&#xff0c;通讯录中的数据自然就不存在了&#xff0c;等下次运行通讯录…

Python---自动生成二维码

专栏&#xff1a;python 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些python的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 自动生成二维码 二维码的本质上&#xff0c;就…

人工智能学习06--pytorch05--torchvision中的数据集使用DataLoader的使用

torchvision中的数据集使用 test_set的class属性 把数据集每一部分都变成tensor类型 现在输出的就是tensor数据类型了 DataLoader的使用 batch_size 一摞牌中&#xff0c;每次抓几张shuffle 打乱&#xff0c;第二次打牌前&#xff0c;牌的顺序要跟第一次不一样&#xff0…

【JavaSE】一文看懂构造器/构造方法(Cunstructor)

&#x1f331;博主简介&#xff1a;大一计科生&#xff0c;努力学习Java中!热爱写博客~预备程序媛 &#x1f4dc;所属专栏&#xff1a;Java冒险记【从小白到大佬之路】 ✈往期博文回顾: 【JavaSE】保姆级教程|1万字10张图学会类与对象–建议收藏 &#x1f575;️‍♂️近期目标…

CSS边框、边距、轮廓(边框宽度/颜色/各边/简写属性/圆角边框/内外边距/高度宽度/框模型/轮廓宽度/颜色/属性/偏移)——万字长文|一文搞懂

目录 CSS边框 CSS 边框属性 CSS 边框样式 实例 CSS 边框宽度 实例 特定边的宽度 实例 CSS 边框颜色 实例 特定边框的颜色 实例 HEX 值 实例 RGB 值 实例 HSL 值 实例 CSS 边框 - 单独的边 实例 不同的边框样式 实例 它的工作原理是这样的&#xff1a; …

ROS学习寄录1

1 创建ROS工作空间 1.1 创建工作空间 &#xff08;1&#xff09;创建工作空间 mkdir catkin_ws &#xff08;2&#xff09;进入catkin_ws文件夹&#xff0c;然后创建一个src文件夹 cd catkin_ws mkdir src &#xff08;3&#xff09;进入src文件夹&#xff0c;生成CMakeL…

「自控原理」4.2 根轨迹法分析与校正

本节介绍利用根轨迹法分析系统性能发热方法 本节介绍根轨迹校正 文章目录利用根轨迹分析系统性能主导极点法增加零极点对系统的影响根轨迹校正串连超前校正原理与步骤超前校正例题串连滞后校正附加开环偶极子的作用原理与步骤滞后校正例题利用根轨迹分析系统性能 利用根轨迹分…