【Nginx基础】Nginx基础及安装

目录

    • Nginx出现背景
    • Nginx 概念
    • Nginx 作用
      • Http 代理,反向代理
      • 负载均衡:内置策略和扩展策略
        • 内置策略:轮询
        • 内置策略:加权轮询
        • 内置策略:IP hash
      • 动静分离
    • 安装 Nginx
      • Windows下安装(nginx-1.16.1)
      • Linux下安装(Centos nginx-1.18.0)

Nginx出现背景

  公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个 jar 包启动应用就够了,然后内部 tomcat 返回内容给用户。但是慢慢的,使用平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了需求了。

  于是横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求

  希望这个代理服务器可以帮助接收用户的请求,然后将用户的请求按照规则转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验,所以我们使用了 Nginx。

Nginx 概念

  Nginx (engine x) 是一个高性能的 HTTP 和反向代理 Web 服务器,同时也提供了 IMAP / POP3 / SMTP 服务。Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本 0.1.0 发布于2004年10月4日。2011年6月1日,Nginx 1.0.4 发布。

  其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力在同类型的网页服务器中表现较好,中国大陆使用 Nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

  Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持 perl 语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动。还能够不间断服务的情况下进行软件版本的升级。

  Nginx 代码完全用 C 语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。

Nginx 作用

Http 代理,反向代理

作为web服务器最常用的功能之一,尤其是反向代理。

区别正向代理与反向代理
正向代理:
在这里插入图片描述
反向代理:
在这里插入图片描述

负载均衡:内置策略和扩展策略

Nginx 提供的负载均衡策略有2种:内置策略扩展策略。内置策略为轮询,加权轮询,IP hash。

内置策略:轮询

在这里插入图片描述

内置策略:加权轮询

在这里插入图片描述

内置策略:IP hash

  ip hash 对客户端请求的 ip 进行 hash 操作,然后根据 hash 结果将同一个客户端 ip 的请求分发给同一台服务器进行处理,可以解决 session 不共享的问题。
在这里插入图片描述

动静分离

  动静分离,在软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件
  让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。使用 Nginx 大大提高了网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼。
在这里插入图片描述

安装 Nginx

Windows下安装(nginx-1.16.1)

  • 下载 Nginx
    http://nginx.org/en/download.html 下载稳定版本。下载nginx
    nginx/Windows-1.16.1为例,直接下载 nginx-1.16.1.zip。下载后解压。

  • 启动 Nginx
    (1). 直接双击 nginx.exe,双击后一个黑色的弹窗一闪而过。
    (2). 打开 cmd 命令窗口,切换到 nginx 解压目录下,输入命令 nginx.exe ,回车即可。

  • 检查 Nginx是否启动成功
    直接在浏览器地址栏输入网址 http://localhost:80 回车,出现 Welcome to nginx !

  • 配置监听
    (1). nginx 的配置文件是 conf 目录下的 nginx.conf,默认配置的 nginx 监听的端口为 80,如果 80 端口被占用可以修改为未被占用的端口即可。
    (2). 修改了 nginx 的配置文件 nginx.conf 时,不需要关闭 nginx 后重新启动 nginx,只需要执行命令 nginx -s reload 即可让改动生效。

  • 关闭nginx
    如果使用 cmd 命令窗口启动 nginx, 关闭 cmd 窗口是不能结束 nginx 进程的,可使用两种方法关闭nginx:
    (1). 输入 nginx 命令 nginx -s stop(快速停止 nginx) 或 nginx -s quit(完整有序的停止 nginx)
    (2). 使用 taskkill 命令taskkill /f /t /im nginx.exe

taskkill /f /t /im nginx.exe
# taskkill是用来终止进程的,
# /f是强制终止 .
# /t终止指定的进程和任何由此启动的子进程。
# /im示指定的进程名称 .

Linux下安装(Centos nginx-1.18.0)

  • 安装 gcc
    安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装yum install gcc-c++

  • PCRE pcre-devel 安装
    PCRE (Perl Compatible Regular Expressions) 是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。yum install -y pcre pcre-devel

  • zlib 安装
    zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。yum install -y zlib zlib-devel

  • OpenSSL 安装
    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。yum install -y openssl openssl-devel

  • 下载安装包
    手动下载.tar.gz安装包,地址:https://nginx.org/en/download.html Linux安装nginx tar.gz安装包地址 (以 nginx-1.18.0 为例)

tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
  • 配置
    使用默认配置,在 nginx 根目录下执行
./configure
make
make install# 查找安装路径: 
whereis nginx
# nginx: /usr/bin/nginx /usr/local/nginx
  • Nginx 常用命令
cd /usr/local/nginx/sbin/
./nginx  启动
./nginx -s stop  # 停止
./nginx -s quit  # 安全退出
./nginx -s reload  # 重新加载配置文件
ps aux|grep nginx  # 查看 nginx 进程# 启动成功访问 服务器ip:80# 若连接不上,检查安全组是否开放端口,或者服务器防火墙是否开放端口
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 参数解释
# firwall-cmd:是Linux提供的操作firewall的一个工具;
# --permanent:表示设置为持久;
# --add-port:标识添加的端口;
  • 配置示例
upstream lb{server 127.0.0.1:8080 weight=1;server 127.0.0.1:8081 weight=1;
}
location / {proxy_pass http://lb;
}

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

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

相关文章

安装zabbix5.0监控

官网安装手册: https://www.zabbix.com/cn/download 一、 安装zabbix a. 安装yum源 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpmyum clean allb. 安装Zabbix server,web前端,agent y…

Kubernetes关于cpu资源分配的设计

kubernetes资源 在K8s中定义Pod中运行容器有两个维度的限制: 资源需求(Requests):即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。如 Pod运行至少需要2G内存,1核CPU。(软限制)资源限额(Limits):即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这…

MongoDB 使用总结

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

【技能实训】DMS数据挖掘项目(完整程序)

文章目录 1. 系统需求分析1.1 需求概述1.2 需求说明 2. 系统总体设计2.1 编写目的2.2 总体设计2.2.1 功能划分2.2.2 数据库及表2.2.3 主要业务流程 3. 详细设计与实现3.1 表设计3.2 数据库访问工具类设计3.3 配置文件3.4 实体类及设计3.5 业务类及设计3.6 异常处理3.7 界面设计…

docker 安装 字体文件

先说一下我当前的 场景 及 环境,这样同学们可以先评估本篇文章是否有帮助。 环境: dockerphp8.1-fpmwindows 之所以有 php,是因为这个功能是使用 php 开发的,其他语言的同学,如果也有使用到 字体文件,那么…

zookeeper集群和kafka的相关概念就部署

目录 一、Zookeeper概述 1、Zookeeper 定义 2、Zookeeper 工作机制 3、Zookeeper 特点 4、Zookeeper 数据结构 5、Zookeeper 应用场景 (1)统一命名服务 (2)统一配置管理 (3)统一集群管理 (4&a…

vue2-vue项目中你是如何解决跨域的?

1、跨域是什么? 跨域本质是浏览器基于同源策略的一种安全手段。 同源策略(sameoriginpolicy),是一种约定,它是浏览器最核心也是最基本的安全功能。 所谓同源(即指在同一个域)具有以下三个相同点…

mysql大表的深度分页慢sql案例(跳页分页)

1 背景 有一张表,内容是 redis缓存中的key信息,数据量约1000万级, expiry列上有一个普通B树索引。 -- test.top definitionCREATE TABLE top (database int(11) DEFAULT NULL,type varchar(50) DEFAULT NULL,key varchar(500) DEFAULT NUL…

【驱动开发day8作业】

作业1&#xff1a; 应用层代码 #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <sys/ioctl.h>int main(int…

express学习笔记6 - 用户模块

新建router/user.js const express require(express) const routerexpress.Router() router.get(/login, function(req, res, next) {console.log(/user/login, req.body)res.json({code: 0,msg: 登录成功})})module.exportsrouter 在router/user.js引入并使用 const us…

vue框架 element导航菜单el-submenu 简单使用方法--以侧边栏举例

1、目标 实现动态增删菜单栏的效果&#xff0c;所以要在数据库中建表 2 、建表 2.1、表样式 2.2、表数据 3、实体类 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.util.List;Data AllArgsConstructor NoArgsConstr…

OBS视频视频人物实时扣图方法(四种方式)

图片擦除一些杂乱图像 参考&#xff1a;https://www.bilibili.com/video/BV1va411G7be https://github.com/Sanster/lama-cleaner第一种&#xff1a;色度键选项 第二种&#xff1a;浏览器建立窗口选项 参考视频&#xff1a;https://www.bilibili.com/video/BV1WS4y1C7QY http…