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即可解决...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...