Nginx使用—基础知识

news2024/11/19 3:37:56

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

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

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

相关文章

【开源】SpringBoot框架开发固始鹅块销售系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 鹅块类型模块2.3 固始鹅块模块2.4 鹅块订单模块2.5 评论管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 鹅块类型表3.2.2 鹅块表3.2.3 鹅块订单表3.2.4 鹅块评论表 四、系统展示五、核心代码5.…

计算文件大小时容易忽略的问题

计算文件大小时容易忽略的问题 1、概述2、问题背景3、解决方案4、结论 1、概述 大家好,我是欧阳方超,可以关注我的公众号“欧阳方超”,后续内容将在公众号首发。 在处理文件大小时,经常需要将其转换为KB并进行适当处理。然而&…

cuda python torch 虚拟环境配置

以下是Pytorch和CUDA对应的版本 以下是Pytorch和Python对应的版本 检查cuda与Python版本是否匹配 import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.empty(3,4,devicecuda))cuda 删除cuda conda uninstall cudatoolkit --forceconda u…

稀碎从零算法笔记Day5-LeetCode:轮转数组

题型:数组、数学、双指针 前言:LC说你得用三种方法做出来(悲) 链接:189. 轮转数组 - 力扣(LeetCode) 来源:LeetCode 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 …

操作系统概念概述

软件设计师11--操作系统 考点1:操作系统的作用操作系统概述例题: 考点2:特殊的操作系统例题: 考点1:操作系统的作用 操作系统概述 管理系统的硬件、软件、数据资源控制程序运行人机之间的接口应用软件与硬件之间的接口…

289页初中级前端题助你拿下Offer,web前端开发面试技巧

HTML面试题部分 1.H5的新特性有哪些 2.Label的作用是什么?是怎么用的? 3.HTML5的form如何关闭自动完成功能 4.dom如何实现浏览器内多个标签页之间的通信? 5.实现不使用 border 画出1px高的线,在不同浏览器的标准模式与怪异模式下都 能保持一…

详解C#之WinForm版利用RichTextBox 制作文本编辑器【附源码】

在Windows应用程序开发中,刚刚介绍了WPF版的利用RichTextBox实现文本编辑器,今天继续推出WinForm版的利用RichTextBox实现文本编辑器。本文利用一个简单的小例子,简述如何在WinForm开发中,利用RichTextBox开发文本编辑器&#xff…

数据传输的同步技术包含哪些?如何高效安全传输数据?

在数字化时代,数据传输的同步技术对于确保信息的一致性和通信质量至关重要。本文将探讨数据传输同步技术的种类、如何实现高效安全的数据传输,以及企业在数据迁移中常用的几种方式。最后,我们将重点介绍镭速大数据迁移工具的优势。 数据传输同…

论文:万卡集群训练大模型(by字节跳动)

论文:MegaScale: Scaling Large Language Model Training to More Than 10,000 GPUs(https://arxiv.org/pdf/2402.15627.pdf) 结论: 1,字节跳动提出了万卡集群大模型训练架构MegaScale,并在12288个GPU上训练…

118页Vue面试题总结,就是这么简单

问:BFC 与 IFC 区别 BFC 是块级格式上下文,IFC 是行内格式上下文: 内部的 Box 会水平放置水平的间距由 margin,padding,border 决定 问:BFC会与float元素相互覆盖吗?为什么?举例说…

人事档案转出需要注意哪些方面

人事档案转出是指将员工的人事档案从一个部门、公司或组织转移到另一个部门、公司或组织的过程。这个过程需要注意以下几个方面: 1.法律合规:在进行人事档案转出前,要确保遵守相关的法律法规和公司内部规定。例如,要确保有合法的授…

web组态--新一代全流程低代码物联网平台

先上图,实际完成效果: 1.添加应用图纸 登录by组态后台:http://www.byzt.net:90 ​ 点击组态管理-画面管理,先新建一个组态画面,填写画面名称,保存,进入组态画面。 ​ 选择画面管理&#xff…

Linux——网络基础

计算机网络背景 网络发展 独立模式: 计算机之间相互独立 在早期的时候,计算机之间是相互独立的,此时如果多个计算机要协同完成某种业务,那么就只能等一台计算机处理完后再将数据传递给下一台计算机,然后下一台计算机再进行相应…

《 前端 vs. 后端:挑战与机遇的对决》

前言 前端开发和后端开发是构建网站、应用程序和其他软件的两个主要方面。它们各自负责不同的任务和功能。 前端开发: 定义:前端开发是指构建用户直接与之交互的网站或应用程序的过程。前端开发主要关注于用户界面和用户体验。技术栈:前端开发通常涉及使用 HTML、CSS 和 Ja…

基于带时间窗口的电动汽车路由问题的精英对立学习的多群PSO(2022)

英文:Multi-swarm PSO based on Elite Opposite Learning on Electric Vehicle Routing Problem with Time Window 摘要: 带时间窗口的电动汽车路由问题(EVRPTW)是交通领域的一个新问题,用传统的精确求解方法很难解决…

电商网站数据采集配合socks5代理ip怎么进行?

电商网站数据采集是一项重要的任务,可以帮助企业了解市场需求、竞品分析、用户行为等方面。在进行电商网站数据采集时,有时需要配合使用socks5代理IP。本文将介绍如何进行电商网站数据采集配合socks5代理IP。 一、代理IP介绍 代理IP是一种可以隐藏用户真…

大模型笔记:RAG(Retrieval Augmented Generation,检索增强生成)

1 大模型知识更新的困境 大模型的知识更新是很困难的,主要原因在于: 训练数据集固定,一旦训练完成就很难再通过继续训练来更新其知识参数量巨大,随时进行fine-tuning需要消耗大量的资源,并且需要相当长的时间LLM的知识是编码在数百亿个参数中…

95页初级前端模块笔记分享,开发web前端学习

简历 首先肯定是要准备一份自己的简历,简历经常是给面试官的第一印象。 简历一般包括个人基础信息,专业技能,项目经验,其他模块。 个人基础信息模块就不说了,太基础。 **专业 戳这里领取完整开源项目:【…

UE5 C++ TPS开发 学习记录(九

p20 首先我们现在有一个多人游戏的系统类MultiplayerSessionsSubsystem 在这个系统内提供了很多会话系统的接口SessionInterface 当现在我们有一些SessionInterfaceDelegates的委托,这个委托的来源是SessionInterface,所以我们使用的委托可以接收到来自SessionInterface的消息(…

自动化测试环境搭建--Linux内网环境【实操经验】

环境信息 Python版本3.6.8 Jenkins版本2.346.3 Allure版本 2.13.2 环境准备 一、Python需要安装库 allure-pytest (2.13.2) pytest (7.0.1) jsonpath (0.82.2) pytest-html (3.2.0) pytest-ordering (0.6) …