当前位置: 首页 > news >正文

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&#xff1f;2. 适用场景3. Bucket Script 的基本结构4. 关键参数详解5. 示例官方示例&#xff1a;计算每月 T 恤销售额占总销售额的比率百分比示例计算&#xff1a;点击率 (CTR) 6. 注意事项与…...

Android的SQLiteOpenHelper类 笔记241027

SQLiteOpenHelper SQLiteOpenHelper是Android开发中用于管理SQLite数据库的一个非常重要的工具类。以下是对SQLiteOpenHelper的详细介绍&#xff1a; 一、基本概念 SQLiteOpenHelper是一个抽象类&#xff0c;它主要用于管理数据库的创建和版本管理。通过继承这个类&#xff…...

「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用

本篇将通过一个简单的计数器应用,带你体验鸿蒙开发环境的实际操作流程。本项目主要练习组件的使用、事件响应和状态管理,帮助开发者熟悉基本的应用构建流程。 关键词 计数器应用组件操作事件响应状态管理HarmonyOS 应用开发一、创建计数器项目 1.1 在 DevEco Studio 中新建项…...

安卓逆向之ARM汇编寻址,汇编指令

一&#xff1a;ARM汇编寻址 1. 立即数寻址 (Immediate Addressing) 指令中直接给出一个常数值&#xff08;立即数&#xff09;&#xff0c;并对其进行操作。 MOV R0, #5 ; 将立即数5载入寄存器R02. 直接寻址 (Direct Addressing) 指令中给出的地址直接指定了内存中的一…...

Idea常见插件(超级实用)

文章目录 Idea好用的插件推荐Idea插件安装Chinese(中文版)Alibaba Java Coding Guidelines&#xff08;代码规范&#xff09;Auto Filling Java Arguments&#xff08;自动补全参数&#xff09;CamelCase&#xff08;变量名称格式转换&#xff09;CodeGeeX&#xff08;智能&…...

C++中如何获取时间并格式化为字符串?

在C中&#xff0c;你可以使用标准库中的 <chrono> 和 <iomanip> 头文件来获取当前时间并将其格式化为字符串。以下是一个简单的示例&#xff0c;展示了如何获取当前时间并将其格式化为一个可读的字符串&#xff08;例如&#xff1a;YYYY-MM-DD HH:MM:SS&#xff09…...

项目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 预测 之前做的项目&#xff0c;再回顾一下 环境&#xff1a;GPU1卡&#xff0c;CPU4核&#xff0c;每显卡12GB&#xff0c…...

GPU 学习笔记三:GPU多机多卡组网和拓扑结构分析(基于数据中心分析)

文章目录 一、概述二、数据中心&#xff08;DC&#xff09;2.1 数据中心简介2.2 传统数据中心的网络模型2.3 脊叶网络模型&#xff08;Spine-Leaf&#xff09;2.4 Facebook的Fabric网络架构 三、基于数据中心的多机多卡拓扑3.1 Spine-Leaf 架构网络规模测算方法3.2 NVIDIA多机多…...

各编程语言处理HTTP状态码的库推荐

Http 状态码用那个库 备注 Spring 的状态码库为 org.springframework.http.HttpStatus Apache 的状态码库为&#xff1a; org.apache.http.HttpStatus 通常这 2 个库都差不多。 如你的项目中已经用了 Spring 的代码的话&#xff0c;那么就用 Spring 的库吧。 不管是那个库…...

【Mac】Python 环境管理工具

一、pyenv 1、安装 &#xff08;1&#xff09;安装 brew install pyenv&#xff08;2&#xff09;环境配置 查看系统使用 shell 是 bash 还是 zsh bash 配置文件&#xff1a;~/.bash_profile zsh 配置文件&#xff1a;~/.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 型饮料&#xff0c;凭 3 个瓶盖可以再换一瓶 C 型饮料&#xff0c;并且可以一直循环下去(但不允许暂借或赊账)。 请你计算一下&#xff0c;如果小明不浪费瓶盖&#xff0c;尽量地参加活动&#xff0c;那么&#xff…...

K8S测试pod内存和CPU资源不足

只设置requests参数 mysql主从pod启动后监控 读压测之后 同时设置limits和requests&#xff0c;只调低内存值 监控 压力测试 同时设置limits和requests&#xff0c;只调低CPU值 初始状态 开始压测 结论 对于CPU&#xff0c;如果pod中服务使用CPU超过设置的limits&…...

rabbitmq 使用注意事项

1&#xff0c;注意开启的端口号&#xff0c;一共四个端口号&#xff0c;1883是mqtt连接的端口号&#xff0c;如果没开&#xff0c;是连接不上的需要手动起mqtt插件。 //开始mqtt插件服务 rabbitmq-plugins enable rabbitmq_mqtt 2&#xff0c;15672端口是http网页登录的管理后…...

<项目代码>YOLOv8 夜间车辆识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…...

xterm.js 库作用

前言&#xff1a;xterm.js 是一个用于在网页上模拟终端的强大 JavaScript 库。 一、在网页中实现终端模拟 1. 提供类似终端的界面 xterm.js可以在浏览器中创建一个看起来和行为都类似于传统终端的界面。这包括显示命令行提示符、接受用户输入、显示命令输出等。 例如&#…...

在Excel中如何快速筛选非特定颜色

Excel中的自动筛选是个非常强大的工具&#xff0c;不仅可以筛选内容&#xff0c;而且可以筛选颜色&#xff0c;例如筛选A列红色单元格。但是有时希望筛选除了红色之外的单元格&#xff08;下图右侧所示&#xff09;&#xff0c;其他单元格的填充色不固定&#xff0c;有几种颜色…...

kotlin定时器和主线程定时器

场景 最近要用kotlin写一个每隔一段时间切视频并截图 刷刷的就写出来了&#xff0c;很快啊 timerTask object : TimerTask() {override fun run() {captureWindow()if ((group 1) * 4 > urls.size) {showDialog()timerTask.cancel()timer.cancel()}groupupdatePlayers(…...

vscode不能执行vue命令/ vue : 无法加载文件

问题&#xff1a; 解决&#xff1a; 1. 在Windows应用中找到Windows PowerShell&#xff0c;以管理员运行&#xff1a; 2. 在命令框输入&#xff1a; set-ExecutionPolicy RemoteSigned&#xff0c; 然后输入A即可解决...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...