Nginx使用—基础知识

Nginx简介

Nginx优点

高性能、高并发
支持很高的并发,在处理大量并发的情况下,比其他web服务器要高效

轻量且高扩展
功能模块少(源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装)
代码模块化(易读,便于二次开发,支持第三方模块,对于开发人员非常友好)

高可靠性
只要不过分不会出现问题
宕机时间,99.999%
大部分web服务需要定期重启维护,nginx不需要

支持热部署
运行期间,更新迭代、代码部署

互联网公司都选择 Nginx
Nginx技术成熟, 国内公司基本大规模使用
适合当前主流架构趋势, 微服务、云架构、中间层
统一技术栈, 降低维护成本, 降低技术更新成本。

事件模型:Nginx 采用 Epoll 网络模型, Apache 采用 Select 模型
Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。
Epoll: 当用户发起请求,epoll模型会直接进行处理,效率高效,并无连接限制。

Nginx应用场景

Nginx架构原理

1.主管进程负责工作进程的配置加载、启停等操作;
2.工作进程负责处理具体请求;
3.工作进程之间都是独立的,每个工作进程处理多个连接;
4.每个连接由一个工作进程全权处理,不需要进行进程切换,不会产生进程切换引起的资源消耗问题;
5.共享内存允许多个进程访问同一个内存地址,一个进程改变了内存中的内容后,其他进程都可以使用变更后的内容。

Nginx安装

1.Yum安装

1)配置nginx.repo软件源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

2)安装
yum install -y nginx

3)启动nginx服务
systemctl start nginx 
systemctl enable nginx 

2.源码包安装

1)基础环境与配置准备
1—1.安装编译需要的插件或依赖包
yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
1-2.创建用户和组,且不创建用户的家目录
groupadd nginx -g 888
useradd -u 888 -g 888 -s /sbin/nologin -M nginx

2)下载nginx源码包
wget  http://nginx.org/download/nginx-1.24.0.tar.gz

3)解压
mkdir -p /app
tar xf nginx-1.24.0.tar.gz -C /app/
cd /app/nginx-1.24.0

4)配置
 ./configure --prefix=/app/nginx-1.24  --user=nginx --group=nginx

5)编译编译安装
make && make install

6)做软链接,方便后期维护
ln -s /app/nginx-1.24 /app/nginx

7)配置环境变量
echo "export PATH=$PATH:/app/nginx/sbin" >> /etc/profile
source /etc/profile

8)启动nginx
nginx

验证nginx是否启动
查看进程
ps aux | grep [n]ginx

监听端口号
ss -lntp | grep :80

Nginx配置文件

Nginx的相关命令

nginx #启动nginx。 等价于systemctl start nginx
 -s reopen #重启Nginx。 等价于systemctl restart nginx
 -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx。 等价于systemctl reload 
nginx
 -s stop #强制停止Nginx服务。 等价于systemctl stop nginx
 -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)
 -?,-h #打开帮助信息
 -v #显示版本信息并退出
 -V #显示版本和配置选项信息,然后退出
 -T #检测配置文件是否有语法错误,转储并退出
 -q #在检测配置文件期间屏蔽非错误信息
 -p prefix #设置前缀路径(默认是:/usr/share/nginx/)
 -c filename #设置配置文件(默认是:/etc/nginx/nginx.conf)
 -g directives #设置配置文件外的全局指令

Nginx配置文件介绍

/etc/nginx/nginx.conf 主配置文件 
[root@web02 ~]# cat /etc/nginx/nginx.conf 
#全局配置模块
user  nginx;    # nginx 程序用户  
worker_processes  auto;  #工作进程的数量  根据cpu内核数量去进行生成工作进程数

error_log  /var/log/nginx/error.log notice;  #错误日志存放的位置 notice 错误日志的一种格式
pid        /var/run/nginx.pid;   #进程ID的文件
#事件处理模块
events {
    worker_connections  1024;
}
#http的核心模块
http {
    include       /etc/nginx/mime.types;  #include引入配置文件  mime.type传输文件的文件类型
    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  /var/log/nginx/access.log  main; #运行日志
    sendfile        on;   #程序不需要通过内存 而直接给到用户
    #tcp_nopush     on;

    keepalive_timeout  65;  #长连接超时时间

    #gzip  on;   #对传输的http的超文本文件进行压缩
	
	#引入虚拟主机配置文件
    include /etc/nginx/conf.d/*.conf;	
}

虚拟主机的配置文件
/etc/nginx/conf.d/default.conf
虚拟主机 
server {
    listen       80;
    server_name  localhost;   #主机名称 localhost本地 -> 10.0.0.8
    						  #域名nierenjun.com

    #access_log  /var/log/nginx/host.access.log  main;  #运行日志

    location / {
        root   /usr/share/nginx/html;  #页面代码文件的主要目录
        index  index.html index.htm;   #默认索引页
    }

    #error_page  404              /404.html;  #错误页面

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

Nginx案例

需求:
输入zjh.game.com/maliao打开马里奥游戏
输入zjh.game.com/h5game打开h5小游戏

1.将两个小游戏的压缩包传到主机上
[root@web03 ~]# ls
anaconda-ks.cfg  h5game.zip  html5-mario.zip

2.创建/web目录存放解压后的两个小游戏
mkdir -p /web
unzip h5game.zip 
mv h5game /web/
unzip html5-mario.zip 
mv html5-mario /web/maliao

3.让/etc/nginx/conf.d目录下的default.conf
cd /etc/nginx/conf.d
rename .conf .conf.bak *.conf

4.编写新的虚拟主机配置文件
vim /etc/nginx/conf.d/game.conf
server {
        listen 80;
        server_name zjh.game.com; 
        root /web;
        location /maliao {
         index index.html;
        }
        location /h5game {
         index index.html;
        }
}

5.检查配置文件是否有错误
nginx -t

6.重启nginx服务
systemctl restart nginx

7.修改本地dns的地址
7-1.win+R 输入C:\Windows\System32\drivers\etc
7-2.将本地dns的所有权限放开
7-3.在hosts文件里面添加10.0.0.9 zjh.game.com并保存

8.验证
浏览器输入zjh.game.com/maliao
浏览器输入zjh.game.com/h5game

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

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

相关文章

win10虚拟机安装驱动教程

在虚拟机菜单栏中选择安装VMware Tools: 安装好后,在虚拟机中打开此电脑,双击DVD驱动器进行安装: 一直点击下一步: 安装完成: 此时重启虚拟机,发面小屏幕页面的虚拟机自动占满了全部屏幕&#x…

Docker常用基础指令

目录 1 前言 2 常用指令 2.1 获取帮助 2.2 拉取镜像到本地 2.3 对本地镜像进行打包 2.4 对本地镜像的删除 2.5 通过tar包加载本地镜像 2.6 查看所有镜像 2.7 创建新的容器 2.8 查看容器 2.9 停止容器运行 2.10 运行容器 2.11 删除容器 2.12 查看容器日志 2.13 进…

ImportError: Could not import docarray python package解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

springcloud和基础服务的搭建以及封装

代码仓库地址:https://github.com/zhaoyiwen-wuxian/springcloud-common page分页也进行了封装,只需要添加到pom中,将会自动进行分页,并且后端不需要写任何的分页数据。只需要前端自己传分页参数即可,并且里面封装了很…

Clickhouse: 数据基本知识

产品概述 ClickHouse是一个开源的列式数据库管理系统,专门用于在线分析处理(OLAP)场景。它具有高性能、高可靠性、高可扩展性和低成本等优点,被广泛应用于大数据领域。 以下是ClickHouse的主要特点: 高性能&#xff…

挑战杯 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸表情识别 该项目较…

Unity角色动画变成半跪\半蹲\下沉 的问题

导入的人物动画发生如图形态 解决方法:找到动画模型,Rig - AnimationType 改为Humanoid ,然后Apply一下

Vue+OpenLayers7入门到实战目录

前言 本篇作为《VueOpenLayers7入门到实战》所有文章的二合一汇总目录,方便查找。 本专栏源码是由OpenLayers7.x版本结合Vue框架编写。 本专栏从Vue搭建脚手架到如何引入OpenLayers7依赖的每一步详细新手教程,再到通过各种入门案例和综合性的实战案例&a…

【MySQL】视图、索引

目录 视图视图的用途优点视图的缺点创建视图查看视图修改视图删除视图注意事项 索引索引的原理索引的数据结构二分查找法Hash结构Hash冲突!!! B树二叉查找树 存在问题改造二叉树——B树降低树的高度 B树特点案例继续优化的方向 改造B树——B树…

项目管理工具及模板总结|甘特图|OKR周报|任务管理|头脑风暴

项目管理常用模板大全: 1. 项目组OKR周报 2. 项目组传统周报工作法 3. 项目甘特图 4. 团队名单 5. 招聘跟进表 6. 出勤统计 7. 年度工作日历 8. 项目工作年计划 9. 版本排期 10. 项目组任务管理 11. 项目规划模板 12. 产品分析报告 13. 头脑风暴 软件开发管理全套标…

Linux CentOS安装教程

CentOS是一种基于Linux的免费、开源的操作系统,它是Red Hat Enterprise Linux(RHEL)源代码的重建版本。CentOS致力于提供稳定、可靠的服务器操作系统,广泛应用于企业级服务器和Web服务器。它具有强大的安全性和稳定性,…

阿里云服务器配置CPU、内存、存储、带宽选择方法

阿里云服务器配置怎么选择?CPU内存、公网带宽和系统盘怎么选择?个人开发者或中小企业选择轻量应用服务器、ECS经济型e实例,企业用户选择ECS通用算力型u1云服务器、ECS计算型c7、通用型g7云服务器,阿里云服务器网aliyunfuwuqi.com整…

Vue+腾讯地图-实现关键词输入提示功能

不废话,上代码~~~ 效果图: 1、先去腾讯地图后台创建自己的应用获取到应用的 Key 腾讯地图后台地址:腾讯位置服务 - 立足生态,连接未来 创建应用的 Key 如下: 2、在项目中添加腾讯地图API的js插件,如…

Thinkphp5.1中,将数组赋值给js使用

一、例如Thinkphp5.1中的的代码是这样的 $data [status > 1,msg > 加载成功,data > [id > 1,username > 小洪帽,] ];$this->assign(data,$data);二、JS代码接收PHP中的数组 注意 <> 符号是不需要放引号的。 let arr <?json_encode($data)?>…

LeetCode 刷题 [C++] 第98题.验证二叉搜索树

题目描述 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 题目分析 由题…

【排序】详解冒泡排序

一、思想 冒泡排序的基本思想是利用两两比较相邻记录的方式&#xff0c;通过一系列的比较和交换操作&#xff0c;使得较大或较小的元素逐渐移动到数列的一端。在每一轮的排序过程中&#xff0c;都会从数列的起始位置开始&#xff0c;对相邻的元素进行比较&#xff0c;如果它们…

Anthropic 公司最新宣布,他们的 AI 聊天机器人模型击败了 OpenAI 的 GPT-4

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

设计MySQL数据表的几个注意点

最近合作搞项目&#xff0c;发现了很多问题。特别的&#xff0c;数据库层面上的问题更为致命。记录一下&#xff0c;希望后面看到博客的同学们注意。 注意&#xff1a;以下观点只用于一般情况下的单体、微服务&#xff0c;不保证适用所有场景。 一、ID问题 ID名称问题 如下图…

四平方和c++

题目 输入样例&#xff1a; 5输出样例&#xff1a; 0 0 1 2 思路 首先想到的是使用三重循环求出 a&#xff0c;b&#xff0c;c&#xff0c;d 可以通过 n - a - b - c 得到。理论时间复杂度为O(1000 * 1000 * 1000) O(10^9)。因此需要想办法降低循环层数。 考虑使用两个双重循…

Unreal Engine5记录 02简单的第三人称游戏

导航视口 选择对应的第三人称游戏选项&#xff0c;并选择项目创建的位置&#xff0c;点击创建 创建之后&#xff0c;会打开一个默认的导航视口 点击运行&#xff0c;进入窗口 你就像进入了一个游戏关卡&#xff0c;这个和你玩的第三人称游戏一样&#xff08;类似吃鸡&#xf…