Nginx 基础

文章目录

  • Nginx
    • 概念
    • 安装
      • 下载上传安装包
      • 执行准备条件
      • 指定安装位置
      • 编译和安装
      • 启动服务
      • 创建启动脚本
    • linux文件目录
    • nginx运行原理
    • nginx配置
    • 域名
      • 概念和原理
      • 域名配置

Nginx

概念

Nginx 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

安装

下载上传安装包

可以直接通过此链接直接下载
http://nginx.org/download/nginx-1.11.1.tar.gz

或者通过命令进行直接下载到linux上面

wget http://nginx.org/download/nginx-1.11.1.tar.gz

将nginx-1.21.6.tar.gz软件上传到 /usr/local文件夹下面,并解压
tar -zxvf nginx-1.21.6.tar.gz

执行准备条件

​	yum install -y gcc                               安装C语言库
​	yum install -y pcre pcre-devel                   安装perl库 
​	yum install -y zlib zlib-devel                   安装zlib库 

指定安装位置

​ 进入nginx文件以后执行
​ ./configure --prefix=/usr/local/nginx

编译和安装

make
​make install
在这里插入图片描述

启动服务

进入进入安装好的目录 /usr/local/nginx/sbin

 	cd /usr/local/nginx/sbin/ 
​	./nginx 启动 
​	./nginx -s stop 快速停止 
​	./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求 
​	./nginx -s reload 重新加载配置 

在这里插入图片描述
注意:如果启动了以后不能生效,记得关闭防火墙。

systemctl stop firewalld

systemctl disable firewalld

一般在公司里面是不会直接将防火墙关闭的,这样会导致黑客端口扫描,找到相关的漏洞

firewall-cmd --zone=public --add-port=80/tcp --permanent

创建启动脚本

vi /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx - web server 
After=network.target remote-fs.target nss-lookup.target 

[Service] 
Type=forking 
PIDFile=/usr/local/nginx/logs/nginx.pid 
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf 
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop 
ExecQuit=/usr/local/nginx/sbin/nginx -s quit 
PrivateTmp=true 

[Install] 
WantedBy=multi-user.target

重新加载系统服务
systemctl daemon-reload

启动服务
systemctl start nginx.service
systemctl restart nginx.service

开机启动
systemctl enable nginx.service

linux文件目录

在这里插入图片描述

  • sbin: 存放二进制启动文件
  • conf:存放配置文件
  • logs:存放日志文件
  • html:存放静态页面
  • uwsgi_temp:存放的是临时文件

修改html中的index.html文件,重新启动nginx
在这里插入图片描述

注意:/usr/lib/systemd/system/nginx.service 文件复制以后要看看格式是否正确,如果不对,则可能导致重启失败。

nginx运行原理

在这里插入图片描述

1 系统启动以后就会有一个nginx的主进程

2 主进程读取nginx.conf配置文件,确认文件的位置

3 主进程创建多个work进程

4 当用户请求进来以后,work进程就可以读取解析用户的请求,并返回信息。

nginx配置

从nginx服务器上将nginx.conf配置文件下载到本地
在这里插入图片描述
将注释后的代码先删除,得到一个最简化的配置文件,如下

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
  • worker_processes 1; 配置worker进程的数量,这个数字跟cpu的核心数相关,nginx优化的一个参数

  • worker_connections 1024; 一个worker进程的最大连接数。

  • include: 引入其他的文件

  • mime.types: 这个文件的作用是,当用户请求资源文件的时候,我们将不同文件根据后缀,告诉用户解析方式,其实当用户浏览器拿到服务器给的资源的时候,即使给了后缀名,浏览器也是不能完全解析的,需要在请求头的地方告诉浏览器解析方式。比如png格式的文件,需要image/png的方式解析。

  • keepalive_timeout 65; 保持长连接的时长。

  • server 配置资源文件的,相当于一个完整的服务器站点 vhost,可以通过端口号来区分。

  • listen 80; 站点监听的端口

  • server_name 域名; 站点的域名(是一个网路能解析的域名)

  • location 用来匹配uri的 域名:端口/uri

  • root html; 当用户的请求和location的uri匹配的时候,要进入的目录资源

  • index index.html index.htm;当用户的请求和location的uri匹配的时候,默认的请求主页

错误提示
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
当服务器发生内部错误的时候,比如500,502…就会将请求转发到 /50x.html,从html目录中找到 50x.html文件

在这里插入图片描述

域名

概念和原理

域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。域名使一个IP地址有"面具" 。一个域名的目的是成为便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等),世界上第一个注册的域名是在1985年1月注册的。

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

通俗的说:因为我们的IP地址都一连串的数字,不好记忆,所以我们用一个很好记的一串单词来代替ip地址。然后通过DNS服务器来记录我们域名和IP的对应关系,以后我们访问IP的时候就可以通过域名的方式,间接的去访问我们的IP地址了。

域名配置

以下以腾讯云为案例:

  • https://console.dnspod.cn/dns/hanmh2020.work/record

  • 配置域名和ip的对应关系,然后启动解析

  • 在linux home目录下创建www文件夹

  • 在www文件夹下面创建 www文件夹保存主站点信息,vod文件夹保存视频站点

  • 在www和vod文件夹下面分别创建index.html,并写入信息

  • 修改配置文件

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    server {
        listen       80;
        server_name  www.xxxxxx.work;

        location / {
            root   /home/www/www;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    
    server {
        listen       88;
        server_name  vod.xxxxxx.work;

        location  /{
            root   /home/www/vod;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

注意这里的域名修改成自己的
访问 http://www.hanmh2020.work:88/ 和 http://vod.hanmh2020.work:88/
www.hanmanhong2022.cloud vod.hanmanhong2022.cloud:88

注意:可以使用 .,$d 删除整个配置文件里的内容。

说明:这里其实配置了两个虚拟主机,两个主机可以各自管理自己的文件,互不影响。

下期续写 反向代理,以及动静分离和反向代理,以及动静分离,以及Nginx跨域问题

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

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

相关文章

211基于matlab的多类结构动力学

基于matlab的多类结构动力学,凸轮机构、双凸轮、弦振动模拟、阻尼振动 、四连杆机构 、套杆运动 、三根弹簧作用的振子。程序已调通,可直接运行。 211 matlab 结构动力学 根弹簧作用的振子 - 小红书 (xiaohongshu.com)

javaweb学习(day10-服务器渲染技术)

一、基本介绍 1.前言 目前主流的技术是 前后端分离 (比如: Spring Boot Vue/React)JSP 技术使用在逐渐减少,但使用少和没有使用是两个意思,一些老项目和中小公司还在使用 JSP,工作期间,你很有可能遇到 JSPJSP 使用在减少(但是现…

Python深度学习034:cuda的环境如何配置

文章目录 1.安装nvidia cuda驱动CMD中看一下cuda版本:下载并安装cuda驱动2.创建虚拟环境并安装pytorch的torch_cuda3.测试附录1.安装nvidia cuda驱动 CMD中看一下cuda版本: 注意: 红框的cuda版本,是你的显卡能装的最高的cuda版本,所以可以选择低于它的版本。比如我的是11…

人工智能|深度学习——基于Xception算法模型实现一个图像分类识别系统

一、Xception简介 在计算机视觉领域,图像识别是一个非常重要的任务,其应用涵盖了人脸识别、物体检测、场景理解等众多领域。随着深度学习技术的发展,深度卷积神经网络(Convolutional Neural Networks,简称CNN&#xff…

阿赵UE学习笔记——24、动画播放控制

阿赵UE学习笔记目录   大家好,我是阿赵。   继续学习虚幻引擎的使用。关于UE的动画系统,之前学习了很多,包括动画合成或者动画蒙太奇等,实际上最后得到的都是一个动画片段。那么这些动画片段,是需要怎样播放控制呢…

乐观锁解决超卖问题

3.6 乐观锁解决超卖问题 修改代码方案一、 VoucherOrderServiceImpl 在扣减库存时,改为: boolean success seckillVoucherService.update().setSql("stock stock -1") //set stock stock -1.eq("voucher_id", voucherId).eq(&q…

STM32-02基于HAL库(CubeMX+MDK+Proteus)GPIO输出案例(LED流水灯)

文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式,生成代码四、MDK打开生成项目,编写HAL库的GPIO输出代码五、运行仿真程序,调试代码 一、功能需求分析 在完成开发环境搭建之后,开始使用STM32GP…

TCP和UDP区别和使用场景

TCP 和 UDP 是计算机⽹络中两种常⽤的传输层协议,⽤于实现可靠传输和⽆连接传输。 TCP TCP(Transmission Control Protocol)是⼀种⾯向连接的、可靠的传输协议。它通过三次握⼿四次挥⼿进⾏连接和断开链接,保证数据的可靠性、…

H5类似Word文档输入框小记

最近一个需求在客户端编辑输入超长文本带下划线。 最开始的input、textarea无法像span一样换行pass了。柳暗无天日之际,被投喂了一个contenteditable 。试了一下,嗯... 乌龟看绿豆--对眼了。 div 加上 contenteditable 后便继承了inputEvent 开启输入模…

【“状态机” 解析UART不定长度的协议帧】

【“状态机” 解析UART不定长度的协议帧】 1. 数据帧格式2. 状态机原理3. 代码实现 通信设计中考虑协议的灵活性,经常把协议设计成“不定长度”。如果一个系统接收上述“不定长度”的协议帧,将会有一个挑战–如何高效接收与解析。一个实例如下图&#xf…

流量卡VS随身WIFI?手把手教你怎么选!流量卡和随身WiFi哪个好?流量卡和随身WiFi的区别!流量卡和随身WiFi哪个更划算?流量卡和随身WiFi怎么选?

出门在外,网络、流量已经成为了我们必不可少需要考虑的问题!在选择如何获取大流量时,很多人都选择困难:是选择一张流量卡,还是一个随身WIFI? 今天,将从功能与形态、信号、适用场景、限制条件等多…

初阶数据结构—算法的时间复杂度和空间复杂度

第一章:数据结构前言(Lesson 1) 1. 什么是数据结构? 数据结构 (Data Structure) 是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。 2. 什么是算法? 算法(Algorithm)…

Linux学习笔记————C 语言版 LED 灯实验

这里写目录标题 一、实验程序编写二、 汇编部分实验程序编写三、C 语言部分实验程序编写四、编译下载验证 汇编 LED 灯实验中,我们讲解了如何使用汇编来编写 LED 灯驱动,实际工作中是很少用到汇编去写嵌入式驱动的,毕竟汇编太难,而…

X射线源电流电压的实际影响

在进行实际实验的时候,感觉X射线电流电压好像对于成像质量的影响差不多,分不清楚了,这里记录一下,还没探索到原因。 80kv 500uA 功率:40W 90kv 300uA 功率:27W 90kev 600uA 110v 300uA

java的警示之有危险的行为

👨‍💻作者简介:👨🏻‍🎓告别,今天 📔高质量专栏 :☕java趣味之旅 欢迎🙏点赞🗣️评论📥收藏💓关注 💖衷心的希…

Sketch webView方式插件开发技术总结

Sketch作为一款广受欢迎的矢量图形设计工具,其功能远不止基础的矢量设计,它的真正实力部分源自其丰富的插件生态系统。Sketch向开发者提供了官方的第三方插件接口,这使得整个社区能够创建和分享众多功能各异的插件,极大地拓展了Sk…

2024最新软件测试【测试理论+ python 编程 】面试题(内附答案)

一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议, …

成熟在用的二级医院手术麻醉系统源码 医疗管理系统源码 自主版权

成熟在用的二级医院手术麻醉系统源码 医疗管理系统源码 自主版权 手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程…

Spring AOP + 自定义注解 实现公共字段的填充

Spring AOP 自定义注解 实现公共字段的填充 代码冗,不利于后期维护. 定义操作这些字段的方法类型 实现步骤: 自定义注解AutoFill,用于表示操作这些公共字段的方法自定义切面类AutoFillAspect,统一拦截,通过反射获取方法入参,并填充公共字段…

Redis中的复制功能(二)

复制 新版复制功能的实现 为了解决旧版复制功能在处理断线重复制情况时的低效问题,Redis从2.8版本开始,使用PSYNC命令代替SYNC命令来执行复制时的同步操作。 PYSNC命令具有完整重同步(full resynchronization)和部分重同步(partial resynchronization)…