Nginx(详解以及如何使用)

目录

1. 什么是Nginx?

2. 为什么使用nginx?

3. 安装nginx

3.1?安装nginx的依赖插件

3.2 下载nginx

?3.3?创建一个目录作为nginx的安装路径

?3.4?解压

?3.5?进入解压后的目录

3.6?指定nginx的安装路径

?3.7?编译和安装nginx

3.8 启动nginx

?3.9?访问nginx

?4.?nginx目录结构

?5.nginx配置文件

6. nginx的核心功能

6.1 nginx反向代理功能

6.2 nginx的负载均衡

6.3 nginx动静分离

7. nginx的HA高可用的搭建

7.1 高可用的原理–keepalived

7.2 搭建ha高可用


1. 什么是Nginx?

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

并发能力: 50,000 。

2. 为什么使用nginx

  • Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。
  • Nginx支持热部署,启动简单,可以做到7*24不间断运行。几个月都不需要重新启动。

3. 安装nginx

nginx可以独立安装在一台服务器–也可以和项目在同一个服务器。

3.1安装nginx的依赖插件

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

如果yum这个命令不能用,请看这篇:Linux查看端口号命令以及yum源无法使用的解决方法-CSDN博客

3.2 下载nginx

nginx: download

3.3创建一个目录作为nginx的安装路径

mkdir /usr/nginx

3.4解压

tar -zxvf nginx-1.26.1.tar.gz

3.5进入解压后的目录

cd nginx-1.26.1

3.6指定nginx的安装路径

 ./configure --prefix=/usr/nginx

3.7编译和安装nginx

make install

3.8 启动nginx

在sbin目录下操作或者配置环境使在任何地方都可以使用:

nginx  启动
nginx -s stop  关闭
nginx -s reload 重新加载配置文件

3.9访问nginx

http://nginx所在的ip:nginx的端口/

默认端口号:80

4.nginx目录结构

5.nginx配置文件

在/usr/nginx/conf/nginx.conf中。

#user  nobody; 
#工作的线程数
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    # 每个工作对象允许的连接数
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    server {
       listen 81;
       server_name localhost;
       location /{
           root static;
           index main.html;
          
       }
    }

    #gzip  on;
    server {
        listen       80; # 监听的端口号
        server_name  localhost; # 监听的主机名.域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;


        # 资源/ 
        location / {
            root   html; #根目录
            index  index.html main.html; # 资源
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ .php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

6. nginx的核心功能

6.1 nginx反向代理功能

正向代理

代理的为客户端,对于服务器不知道真实客户的信息。例如:翻墙软件。

反向代理服务器

代理的为服务器端。对于客户来说不知道服务器的信息。例如: nginx。

项目部署例:

准备web项目

准备nginx

启动web项目:

配置nginx:

   server {
       listen 82;
       server_name localhost;
       location /{
           # 代理的服务器地址
          proxy_pass   http://192.168.111.132:8080;
       }
    }

启动ngin:

./usr/nginx/sbin/nginx

6.2 nginx的负载均衡

负载均衡(Load Balance [4]):其意思就是把请求分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

web项目必须搭建的为集群模式。

web服务器项目至少搭建2台以上。

运行两个web工程项目:

springboot项目:

运行springboot项目:java -jar xxx.jar

注意: 端口号别忘记放行。

配置nginx完成负载均衡:

重新加载nginx配置

/usr/nginx/sbin/nginx -s reload

测试

负载均衡的策略

默认为轮询。

权重策略: 服务器硬件配置不同时。

ip_hash策略: 根据访问者客户的ip固定访问对应的web服务器。

花钱买第三方策略插件。

6.3 nginx动静分离

动:动态资源(接口)

静:静态资源 (css js image)。

分离: 之前我们把静态资源和动态资源全部放在web服务器下。 把静态资源放入nginx服务器下。动态资源web服务器下。

7. nginx的HA高可用的搭建

7.1 高可用的原理–keepalived

7.2 搭建ha高可用

俩台机器:

安装keepalived:

yum install -y keepalived

默认安装在/etc/keepalived下

修改keepalived.conf配置文件:

global_defs {
	notification_email {
	  acassen@firewall.loc
	  failover@firewall.loc
	  sysadmin@firewall.loc
	}
	notification_email_from Alexandre.Cassen@firewall.loc
	# ip的地址
	smtp_ server 192.168.111.188
	smtp_connect_timeout 30
	router_id 192.168.111.188
}
# 执行脚本
vrrp_script chk_http_port {
	script "/usr/local/src/nginx_check.sh"
	interval 2  # 每2s执行一次该脚本
	weight -20  # keepalive宕机  权重-20 优先级
}

vrrp_instance VI_1 {
	state MASTER # 角色
	interface ens33 # 网卡名
	virtual_router_id 51 # id 保证主从相同
	priority 100  # 优先级 主节点大于从节点
	advert_int 1
	authentication {
		auth type PASS
		auth pass 1111
        }
	virtual_ipaddress { 
		192.168.111.50 # 虚拟ip. 使用逗号隔开
	}
	track_script {
		 chk_http_port # 追踪nginx脚本
	}
	
}

从节点

global_defs {
	notification_email {
	  acassen@firewall.loc
	  failover@firewall.loc
	  sysadmin@firewall.loc
	}
	notification_email_from Alexandre.Cassen@firewall.loc
	# ip的地址
	smtp_ server 192.168.111.189
	smtp_connect_timeout 30
	router_id 192.168.111.189
}
# 执行脚本
vrrp_script chk_http_port {
	script "/usr/local/src/nginx_check.sh"
	interval 2  # 每2s执行一次该脚本
	weight -20  # keepalive宕机  权重-20 优先级
}

vrrp_instance VI_1 {
	state BACKUP # 角色
	interface ens33 # 网卡名
	virtual_router_id 51 # id 保证主从相同
	priority 90  # 优先级 主节点大于从节点
	advert_int 1
	authentication {
		auth type PASS
		auth pass 1111
        }
	virtual_ipaddress { 
		192.168.111.50 # 虚拟ip. 使用逗号隔开
	}
	track_script {
		 chk_http_port # 追踪nginx脚本
	}
	
}

nginx_check.sh

#!/bin/bash
# 检查是否开启nginx---统计nginx进程的个数
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
        pkill -9 keepalived
fi

A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                        
      /app/nginx/sbin/nginx                #重启nginx
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移
              pkill keepalived                    
      fi
fi

修改权限: chmod 777 nginx_check.sh

启动:

nginx
keepalived systemctl start|stop keepalived

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32 HAL库标准库+ESP8266+机智云

前言 最近在项目中需要云平台对接,前面使用的是阿里云物理平台,具体开发可以看看我的这个文章:手把手教会使用阿里云平台,不过好像没有可以在手机很方便打开连接的,所以我在网上找到一些资料,发现机智云是…

【前端框架】Vue3 面试题深度解析

本文详细讲解了VUE3相关的面试题,从基础到进阶到高级,分别都有涉及,希望对你有所帮助! 基础题目 1. 简述 Vue3 与 Vue2 相比有哪些主要变化? 答案: 响应式系统:Vue2 使用 Object.definePrope…

DarkLabel 2.4使用指南:高效标注视频数据目标检测标签

工具概述 DarkLabel 2.4 是一款强大的多功能标注工具,专为计算机视觉开发者设计,旨在提升标注工作的效率和精确度。其智能标注引擎支持两项核心功能:线性插值标注与多目标跟踪,极大地优化了视频标注过程。 (1&#x…

js解析后端传来的如图示的list集合,怎么获取每个map的key和value

如图示&#xff0c;后端传到前端的questTypeList是一个HashMap的list集合 使用c标签将传来的集合放到下拉单选框中&#xff0c; <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core" %><html> <body><form action"yo…

SpringSecurity请求流转的本质

1. SpringSecurity核心源码分析 分析SpringSecurity的核心原理,那么我们从哪开始分析?以及我们要分析哪些内容? 系统启动的时候SpringSecurity做了哪些事情?第一次请求执行的流程是什么?SpringSecurity中的认证流程是怎么样的?1.1 系统启动 当我们的Web服务启动的时候,…

[论文阅读] SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution

文章目录 一、前言二、主要贡献三、Introduction四、Methodology4.1 Motivation &#xff1a;4.2Framework Overview.** 一、前言 通信作者是香港理工大学 & OPPO研究所的张磊教授&#xff0c;也是图像超分ISR的一个大牛了。 论文如下 SeeSR: Towards Semantics-Aware Rea…

在VS中通过vcpkg包管理器来安装使用qt5

常用指令 .\vcpkg install 库名 .\vcpkg install 库名版本号.\vcpkg install 库名 --trip x86-windows.\vcpkg list.\vcpkg search 库名 .\vcpkg x-all-installed --7zip PS G:\vcpkg> .\vcpkg help usage: vcpkg <command> [--switches] [--optionsvalues] [argume…

ESXI 8.0 linux vSphere Client service has stopped working.手动启动服务

1、首先在你的esxi中进入到你的VC系统中&#xff0c;我这个是linux部署 #查看每个服务及状态 service-control --status2、你会发现有停止的服务和正在启动的&#xff0c;在不知道具体哪些服务具体负责的功能&#xff0c;那你就一个一个起&#xff0c;边起边试----重要服务我后…

基于SpringBoot+Vue的装修装潢管理系统的设计与实现

获取源码&#xff1a;SpringBootVue的装修装潢公司管理系统: 用户&#xff1a;登录、注册、忘记密码、首页、产品展示、装修案例、装修套餐、装修预约、新闻动态、合作伙伴、在线留言、我的装修、个人中心、我的留言、我的预约、关于我们等功能管理员&#xff1a;登录、首页、户…

DeepSeek部署到本地(解决ollama模型下载失败问题)

一、下载ollama软件安装 1、下载ollama软件 Ollama 下载完成后可以直接进行安装&#xff08;外网&#xff0c;速度可能会有点慢&#xff09; 2、修改安装目录 进去下载的目录&#xff0c;使用cmd打开终端输入OllamaSetup.exe /DIRE:\MySoftware\Ollama 输入完成后会自动打开…

【拥抱AI】GPT Researcher的诞生

一、GPT Researcher 研究过程总结 GPT Researcher 是一个开源的自主智能体&#xff0c;旨在通过利用人工智能技术实现高效、全面且客观的在线研究。它通过一系列创新的设计和优化&#xff0c;解决了传统研究工具&#xff08;如 AutoGPT&#xff09;中存在的问题&#xff0c;如…

什么是Dubbo?Dubbo框架知识点,面试题总结

本篇包含什么是Dubbo&#xff0c;Dubbo的实现原理&#xff0c;节点角色说明&#xff0c;调用关系说明&#xff0c;在实际开发的场景中应该如何选择RPC框架&#xff0c;Dubbo的核心架构&#xff0c;Dubbo的整体架构设计及分层。 主页还有其他的面试资料&#xff0c;有需要的可以…

软件单元测试的技术要求

文章目录 一、软件单元测试的概念二、测试对象三、测试目的四、进入条件五、测试内容六、测试环境七、测试实施方一、软件单元测试的概念 单元测试(Unit Testing),是指对软件中的最小可测试单元进行测试验证。单元测试是白盒测试,主要依据软件详细设计和软件代码进行,不仅…

GPT-Sovits:语音克隆训练-遇坑解决

前言 本来以为3050完全无法执行GPT-Sovits训练的&#xff0c;但经过实践发现其实是可以&#xff0c;并且仅花费了十数分钟便成功训练和推理验证了自己的语音模型。 官方笔记&#xff1a;GPT-SoVITS指南 语雀 项目地址&#xff1a;https://github.com/RVC-Boss/GPT-SoVITS 本人…

如何调用 DeepSeek API:详细教程与示例

目录 一、准备工作 二、DeepSeek API 调用步骤 1. 选择 API 端点 2. 构建 API 请求 3. 发送请求并处理响应 三、Python 示例&#xff1a;调用 DeepSeek API 1. 安装依赖 2. 编写代码 3. 运行代码 四、常见问题及解决方法 1. API 调用返回 401 错误 2. API 调用返回…

成员函数定义后面加const是什么功能:C++中const成员函数的作用

成员函数定义后面加const是什么功能&#xff1a;C中const成员函数的作用 前言C中const成员函数的作用总结 前言 在PX4的代码中的位置控制模块中&#xff0c;有这样一个成员函数 void getAttitudeSetpoint(vehicle_attitude_setpoint_s &attitude_setpoint) const;该函数的…

数据结构-----双向链表

一、双向循环列表 head.h #ifndef __head_h__ #define __head_h__ #include <stdio.h> #include <string.h>…

基于Flask的第七次人口普查数据分析系统的设计与实现

【Flask】基于Flask的第七次人口普查数据分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 基于Flask的人口普查可视化分析系统 二、项目界面展示 登录/注册 首页/详情 …

纯手工搭建整套CI/CD流水线指南

目录 一、前言 二、环境准备 1、服务器开荒&#xff08;192.168.1.200&#xff09; 2、离线资源清单&#xff08;提前用U盘拷好&#xff09; 三、硬核安装&#xff1a;比拧螺丝还细的步骤 Step1&#xff1a;搭建GitLab&#xff08;注意&#xff01;这是只内存饕餮&#xf…

RocketMQ - 常见问题

RocketMQ常见问题 文章目录 RocketMQ常见问题一&#xff1a;消息幂等问题1&#xff1a;什么是消费幂等2&#xff1a;消息重复的场景分析2.1&#xff1a;发送时消息重复2.2&#xff1a;消费时消息重复2.3&#xff1a;Rebalance时消息重复 3&#xff1a;通用解决方案3.1&#xff…