nginx配置及虚拟主机
nginx配置及虚拟主机
- 一、http协议介绍
- 1、网站类型
- 2、涉及的软件
- 3、http协议介绍
- 二、nginx安装、启动
- 1、nginx介绍
- 2、nginx安装
- 3、nginx启动管理
- 三、nginx配置文件
- 1、配置文件语法结构
- 2、全局配置
- 3、事件驱动模型的配置
- 4、http的配置
- 四、虚拟主机配置
- 1、类型
- 2、基于名称的虚拟主机配置
- 3、基于IP地址的虚拟主机配置
- 4、一些模块的使用
一、http协议介绍
1、网站类型
-
静态网站
内容是固定的,任何用户访问看到的内容是一样的
开发语言: html, jquery, js, div+css
网页文件: xxxx.html -
动态网站
一段程序代码,根据传递的参数不同返回不同的结果
开发语言:
PHP, xxxxx.php
JAVA, xxxxx.jsp
2、涉及的软件
- httpd
- nginx
- tomcat
3、http协议介绍
http, 明文, 超文本传输协议
https, 密文
-
http/0.9
仅支持传输纯文本数据 -
http/1.0
引入MIME机制,支持传输非文本数据(图片、视频、音频、动画)
引入缓存机制,提升IO速度 -
http/1.1
引入长连接(keepalive)机制,提升速度, 限制长连接的超时时间、最大请求数
引入管道机制,提升速度, 支持同时发送多个请求
增强缓存管理(静态数据、热点数据、过期时间) -
http/2
改进管道机制,支持请求、响应同时发送
二、nginx安装、启动
1、nginx介绍
跨平台、模块化
高并发 C10K、高性能
支持epoll(通知机制)事件驱动模型
2、nginx安装
- 下载nginx安装包
[root@node01 ~]# wget https://nginx.org/download/nginx-1.26.2.tar.gz
- 安装依赖
[root@node01 ~]# yum install -y gcc openssl-devel zlib-devel pcre-devel
- 编译安装nginx
[root@node01 ~]# tar xf nginx-1.26.2.tar.gz
[root@node01 ~]# cd nginx-1.26.2/
[root@node01 nginx-1.26.2]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
[root@node01 nginx-1.26.2]# make
[root@node01 nginx-1.26.2]# make install
- nginx核心目录
安装目录/sbin:nginx命令
安装目录/conf:存放配置文件,主配置文件nginx.conf
安装目录/logs: 存放日志,访问日志、错误日志
安装目录/html: 默认网页目录
3、nginx启动管理
- 启动nginx
[root@node01 ~]# /usr/local/nginx/sbin/nginx [root@node01 ~]# netstat -tunlp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7975/nginx: master [root@node01 ~]# ps -elf | grep nginx
1 S root 7975 1 0 80 0 - 11502 sigsus 14:24 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
5 S nobody 7976 7975 0 80 0 - 11614 ep_pol 14:24 ? 00:00:00 nginx: worker process主进程:负责读取配置文件、记录日志、派生子进程
工作进程:接收、处理客户端请求
- 开机自启动
[root@node01 ~]# vim /etc/rc.d/rc.local
/usr/local/nginx/sbin/nginx[root@node01 ~]# chmod a+x /etc/rc.d/rc.local
- 关闭nginx
[root@node01 ~]# /usr/local/nginx/sbin/nginx -s stop
- 重新加载配置文件
[root@node01 ~]# /usr/local/nginx/sbin/nginx -s reload
- 检测配置文件语法
[root@node01 ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
- 查看nginx版本、安装参数
[root@node01 ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.26.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
三、nginx配置文件
1、配置文件语法结构
全局配置事件驱动模型
events {
}http的配置
http {server {location {}location {}}server {}
}server {}:代表一个虚拟主机,虚拟主机支持在同一个服务器部署多套网站
location{}:用于匹配客户端的访问请求,根据不同的请求做不同的处理
2、全局配置
- 指定工作进程的用户
user nobody;
- 指定工作进程的数量
worker_processes 8;
建议和CPU数量一致,或两倍
- 定义错误日志、级别
error_log logs/error.log notice;
支持的级别: debug, info, notice, warn, error, crit, alert, or emerg
- 定义pid文件
pid logs/nginx.pid;
3、事件驱动模型的配置
events {use epoll;worker_connections 4096; // 每个工作进程处理的最大连接数
}
注意:nginx要运行BSD系列的Linux上,需要修改为use kqueue;
4、http的配置
- 加载子配置文件
include 文件名称;
- 定义访问日志、访问日志的格式
统计网站的访问量、用户访问量、页面访问量
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;变量说明:
$remote_addr:客户端地址
$remote_user:客户端系统用户
$time_local:访问时间
$request:访问请求(请求方法、访问的文件名、http协议版本), 常见请求方法:GET、POST
$status:状态码
$body_bytes_sent:响应数据的大小
$http_referer:超链接地址
$http_user_agent:客户端系统类型、浏览器
http协议的状态码:xxx
200:成功响应
301、302、304:成功响应, 重定向
4xx: 错误 403: 权限拒绝、404文件找不到
5xx: 错误,服务端错误
- 开启sendfile机制(零拷贝)
sendfile on;
- 长连接超时时间、最大请求数
keepalive_timeout 65;keepalive_requests 1000;
- 启用gzip压缩,节省带宽
gzip on;
- 网站服务的基本配置
server {listen 80;server_name www.linux.com;location / {root 网页目录;index index.html;}
}
四、虚拟主机配置
1、类型
基于名称的虚拟主机【常用】
基于IP地址的虚拟主机
2、基于名称的虚拟主机配置
blog.linux.com 网页目录: /web/blog
cart.linux.com 网页目录: /web/cart
- 创建网页目录,测试首页
[root@node01 ~]# mkdir /web/blog -p[root@node01 ~]# cat /web/blog/index.html
<h1> blog.linux.com </h1>
- 编辑虚拟主机的配置文件
[root@node01 ~]# mkdir /usr/local/nginx/conf.d[root@node01 ~]# cat /usr/local/nginx/conf.d/blog.conf
server {listen 80;server_name blog.linux.com;error_log /usr/local/nginx/logs/blog_error.log error;access_log /usr/local/nginx/logs/blog_access.log main;location / {root /web/blog;index index.html;}
}
- 在主配置文件中加载虚拟主机
[root@node01 ~]# vim /usr/local/nginx/conf/nginx.confhttp {include /usr/local/nginx/conf.d/blog.conf;}
- 重新读取配置文件,测试访问
[root@node01 ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@node01 ~]# /usr/local/nginx/sbin/nginx -s reload
3、基于IP地址的虚拟主机配置
music.linux.com 192.168.140.20:80 网页目录: /web/music
- 添加网卡,配置IP
[root@node01 ~]# ifconfig ens37
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.140.20 netmask 255.255.255.0 broadcast 192.168.140.255inet6 fe80::20c:29ff:fecc:6b39 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:cc:6b:39 txqueuelen 1000 (Ethernet)RX packets 1 bytes 60 (60.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 54 bytes 8030 (7.8 KiB)
- 创建网页目录、测试网页
[root@node01 ~]# mkdir /web/music -p[root@node01 ~]# cat /web/music/index.html
<h1> Music </h1>
- 编辑配置文件
[root@node01 conf.d]# cat music.conf
server {listen 192.168.140.20:80;server_name music.linux.com;error_log /usr/local/nginx/logs/music_error.log error;access_log /usr/local/nginx/logs/music_access.log main;location / {root /web/music;index index.html;}
}
- 在主配置文件中加载
[root@node01 conf.d]# vim ../conf/nginx.confinclude /usr/local/nginx/conf.d/music.conf;
[root@node01 conf.d]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@node01 conf.d]#
[root@node01 conf.d]# /usr/local/nginx/sbin/nginx -s reload
4、一些模块的使用
- 访问控制模块
默认允许所有客户端访问的
仅允许140.1访问
allow 192.168.140.1;deny all;
禁止某个客户端访问(加入黑名单 )
deny 192.168.140.1;
- 自动列出网页目录下的文件
默认为403
autoindex on;
- stub_status显示nginx的工作状态
location /stat {stub_status;allow 192.168.140.1;deny all;access_log off;}
Active connections: 1
server accepts handled requests3507 3507 3750
Reading: 0 Writing: 1 Waiting: 0 Active connections:当前的并发连接数
accepts:接收了多少连接
handled:处理了多少连接
reuqests:处理了多少请求
相关文章:
nginx配置及虚拟主机
nginx配置及虚拟主机 一、http协议介绍1、网站类型2、涉及的软件3、http协议介绍 二、nginx安装、启动1、nginx介绍2、nginx安装3、nginx启动管理 三、nginx配置文件1、配置文件语法结构2、全局配置3、事件驱动模型的配置4、http的配置 四、虚拟主机配置1、类型2、基于名称的虚…...
ElasticSearch - Bucket Script 使用指南
文章目录 官方文档Bucket Script 官文1. 什么是 ElasticSearch 中的 Bucket Script?2. 适用场景3. Bucket Script 的基本结构4. 关键参数详解5. 示例官方示例:计算每月 T 恤销售额占总销售额的比率百分比示例计算:点击率 (CTR) 6. 注意事项与…...
Android的SQLiteOpenHelper类 笔记241027
SQLiteOpenHelper SQLiteOpenHelper是Android开发中用于管理SQLite数据库的一个非常重要的工具类。以下是对SQLiteOpenHelper的详细介绍: 一、基本概念 SQLiteOpenHelper是一个抽象类,它主要用于管理数据库的创建和版本管理。通过继承这个类ÿ…...
「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用
本篇将通过一个简单的计数器应用,带你体验鸿蒙开发环境的实际操作流程。本项目主要练习组件的使用、事件响应和状态管理,帮助开发者熟悉基本的应用构建流程。 关键词 计数器应用组件操作事件响应状态管理HarmonyOS 应用开发一、创建计数器项目 1.1 在 DevEco Studio 中新建项…...
安卓逆向之ARM汇编寻址,汇编指令
一:ARM汇编寻址 1. 立即数寻址 (Immediate Addressing) 指令中直接给出一个常数值(立即数),并对其进行操作。 MOV R0, #5 ; 将立即数5载入寄存器R02. 直接寻址 (Direct Addressing) 指令中给出的地址直接指定了内存中的一…...
Idea常见插件(超级实用)
文章目录 Idea好用的插件推荐Idea插件安装Chinese(中文版)Alibaba Java Coding Guidelines(代码规范)Auto Filling Java Arguments(自动补全参数)CamelCase(变量名称格式转换)CodeGeeX(智能&…...
C++中如何获取时间并格式化为字符串?
在C中,你可以使用标准库中的 <chrono> 和 <iomanip> 头文件来获取当前时间并将其格式化为字符串。以下是一个简单的示例,展示了如何获取当前时间并将其格式化为一个可读的字符串(例如:YYYY-MM-DD HH:MM:SS)…...
项目1 yolov5鱼苗检测计数
yolov5鱼苗检测 1. yolov5鱼苗检测1.1. 环境配置1.2 Predict1.3 Validate1.4 Train1.5 生成 ONNX 2 代码解析2.1 模型2.2 数据集2.3 损失函数2.4 训练2.5 预测 之前做的项目,再回顾一下 环境:GPU1卡,CPU4核,每显卡12GB,…...
GPU 学习笔记三:GPU多机多卡组网和拓扑结构分析(基于数据中心分析)
文章目录 一、概述二、数据中心(DC)2.1 数据中心简介2.2 传统数据中心的网络模型2.3 脊叶网络模型(Spine-Leaf)2.4 Facebook的Fabric网络架构 三、基于数据中心的多机多卡拓扑3.1 Spine-Leaf 架构网络规模测算方法3.2 NVIDIA多机多…...
各编程语言处理HTTP状态码的库推荐
Http 状态码用那个库 备注 Spring 的状态码库为 org.springframework.http.HttpStatus Apache 的状态码库为: org.apache.http.HttpStatus 通常这 2 个库都差不多。 如你的项目中已经用了 Spring 的代码的话,那么就用 Spring 的库吧。 不管是那个库…...
【Mac】Python 环境管理工具
一、pyenv 1、安装 (1)安装 brew install pyenv(2)环境配置 查看系统使用 shell 是 bash 还是 zsh bash 配置文件:~/.bash_profile zsh 配置文件:~/.zshrc userMac ~ % echo $SHELL /bin/zsh userMa…...
大语言模型数据流程源码解读(基于llama3模型)
文章目录 前言一、数据进入LlamaForCausalLM(LlamaPreTrainedModel)类二、数据进入LlamaModel(LlamaPreTrainedModel)类1、input_ids的embedding编码2、position_ids位置获取3、causal_mask因果mask构建1、causal_mask调用2、因果mask代码解读(_update_causal_mask)4、hidden_s…...
[蓝桥杯 2015 省 A] 饮料换购
题目描述 乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么ÿ…...
K8S测试pod内存和CPU资源不足
只设置requests参数 mysql主从pod启动后监控 读压测之后 同时设置limits和requests,只调低内存值 监控 压力测试 同时设置limits和requests,只调低CPU值 初始状态 开始压测 结论 对于CPU,如果pod中服务使用CPU超过设置的limits&…...
rabbitmq 使用注意事项
1,注意开启的端口号,一共四个端口号,1883是mqtt连接的端口号,如果没开,是连接不上的需要手动起mqtt插件。 //开始mqtt插件服务 rabbitmq-plugins enable rabbitmq_mqtt 2,15672端口是http网页登录的管理后…...
<项目代码>YOLOv8 夜间车辆识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
xterm.js 库作用
前言:xterm.js 是一个用于在网页上模拟终端的强大 JavaScript 库。 一、在网页中实现终端模拟 1. 提供类似终端的界面 xterm.js可以在浏览器中创建一个看起来和行为都类似于传统终端的界面。这包括显示命令行提示符、接受用户输入、显示命令输出等。 例如&#…...
在Excel中如何快速筛选非特定颜色
Excel中的自动筛选是个非常强大的工具,不仅可以筛选内容,而且可以筛选颜色,例如筛选A列红色单元格。但是有时希望筛选除了红色之外的单元格(下图右侧所示),其他单元格的填充色不固定,有几种颜色…...
kotlin定时器和主线程定时器
场景 最近要用kotlin写一个每隔一段时间切视频并截图 刷刷的就写出来了,很快啊 timerTask object : TimerTask() {override fun run() {captureWindow()if ((group 1) * 4 > urls.size) {showDialog()timerTask.cancel()timer.cancel()}groupupdatePlayers(…...
vscode不能执行vue命令/ vue : 无法加载文件
问题: 解决: 1. 在Windows应用中找到Windows PowerShell,以管理员运行: 2. 在命令框输入: set-ExecutionPolicy RemoteSigned, 然后输入A即可解决...
1.4 STL C++面试问题
1.4.1 说说STL的基本组成部分 总结 STL 的基本组成部分包括容器、算法、迭代器、函数对象和仿函数和适配器。通过这些组件,STL 提供了高效、灵活和可复用的代码结构,极大地提高了 C 的开发效率和程序的可维护性。STL 的设计思想使得算法和数据结构的使…...
Bash、sh 和 Shell都弄混了?
在Linux和Unix系统中,Bash、sh 和 Shell 都与命令行解释器相关,但它们各自的含义和作用略有不同。以下是它们之间的关系和区别: Shell Shell 是一个通用术语,指的是操作系统中负责解释和执行用户命令的程序。它是用户与操作系统…...
架构师备考专栏-导航页
简介 架构师备考专栏——软考系统架构师考试的学习宝典,集合了全面覆盖架构师考试大纲的精华文章。每篇文章都为本人手输,并校对数遍后发表,在此我保障每篇文章的质量绝对过关。诚邀对架构师软考感兴趣的朋友们收藏此页面,并根据个人所需高效…...
STM32-Cube定时器TIM
一、内部时钟源 1、创建项目 File → New → STM32 project选择STM32F103C8T6单片机,命名TIM 2、配置单片机 1.打开USART1,方便我们与电脑连接查看数据 开启UART1并开启中断。 2、设置时钟源 开启外部高速晶振 将时钟频率设置为72MHz 设置调试模…...
Webpack 是什么? 解决了什么问题? 核心流程是什么?
在前端开发中,Webpack 无疑是一个举足轻重的工具。它作为一个静态资源打包工具,能够帮助开发者将项目中的各种资源高效整合,以便于在浏览器中加载和执行。本文将深入探讨 Webpack 的核心功能、解决的问题以及 Webpack的核心流程。 Webpack是什…...
Jenkins面试整理-Jenkins 的主要用途是什么?
Jenkins 的主要用途 是在软件开发流程中实现自动化,尤其是在持续集成(CI)和持续交付/部署(CD)中。具体来说,Jenkins 的主要用途包括: 1. 持续集成(CI): ● Jenkins 自动从版本控制系统(如 Git、SVN)中拉取代码,自动化地编译、构建和测试代码。 ● 每当开发人员提…...
Linux下使用C/C++进行UDP网络编程
UDP 是User Datagram Protocol 的简称,中文名是用户数据报协议,是一种无连接、不可靠的协议,同样它也是工作在传顺层。它只是简单地实现从一端主机到另一端主机的数据传输功能,这些数据通过 IP 层发送,在网络中传输&am…...
【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!
前言 🌟🌟本期讲解关于TCP协议的重要的机制“连接的建立和断开”~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 …...
无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划
着重介绍通过对三维 PCD 点云进行处理生成 2D 栅格地图 PGM,而后将该 PGM 地图充分运用到无人系统路径规划之中,使得无人机能够依据此规划合理避开飞行路线上可能出现的障碍物。(解决如何使用PGM的问题) Hybrid A*算法 参考博客…...
supermall项目上拉加载bug分析
1.bug分析 bug出现的过程是这样的:better-scroll框架会计算滚动内容的高度(通过BScroll对象的scrollerHeight属性记录滚动内容的高度) 由于内容中的图片资源还未加载成功 就已经完成计算 导致计算结果错误 而计算之后 图片资源随之加载完成 这时候better-scroll框架…...
商场设计分析/鹤岗网站seo
信息交换 主要有一下几种: 书面或口头形式正式或非正式形式手势和动作媒体遣词造句 有效的沟通活动和工件创建具有如下基本属性: 沟通目的明确尽量了解沟通接收方,满足其需求及偏好监督并衡量沟通的效果 沟通活动可以根据如下维度进行分类…...
家具行业网站建设/怎么免费搭建自己的网站
centos7安装完成后没有网络1、查看网卡信息:命令:lspci | grep -i ethernet网卡信息:Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)2、下载网卡驱动( Index of /elrepo/elrepo/el7/x…...
山西百度公司做网站的/成都seo招聘信息
自动增长 自动增长:auto_increment,当对应的字段,不给值,或者是默认值,或者是null的时候,就会自动的被系统触发,系统会从当前字段中取已有的最大值再进行1操作,得到新的字段值。 自增…...
唐山做网站企业/优化师
什么是FireMonkey的Winsoft条形码? Winsoft Barcode v6.1用于FireMonkey的Delphi和C Builder条形码组件。 Winsoft Barcode for FireMonkey v6.1的Winsoft条码主要功能: 利用Zint条形码生成器 支持50多种符号,包括Code 128,Data Matrix&…...
wix做的网站在国内访问不/想开个网站怎样开
GitHub地址 用Builder模式重新打造一个dialog,案例中有两种Builder,分别是CommonBuilder和MDBuilder,如果还想实现其他的通用dialog,继承自FRBaseDialogBuilder即可。 1、用法: 1.1、普通Dialog private void showComm…...
人和兽做的网站视频/日照网站优化公司
看到网上有很多ssh配置文章,但是有很多是调不通的,还有版本不同,配置也不尽相同,下面是我做的ssh开发配置教程,以供参考; 本文有图片,请下载附件,附件为图解教程并含有实现注册登陆功能的实例&a…...