当前位置: 首页 > 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即可解决...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...