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

Linux的web服务器的部署和优化

http中访问请求中I/O结构

在HTTP协议中,I/O(输入/输出)结构主要涉及客户端与服务器之间的请求和响应交互。以下是HTTP请求和响应的基本结构及其关键组成部分:

HTTP请求结构

HTTP请求由请求行、请求头和请求体三部分组成

请求行:包含请求方法(如GET、POST)、请求的URI(如/index.html)和HTTP版本(如HTTP/1.1)。

请求头:包含客户端向服务器传递的附加信息,如Host、User-Agent、Accept等。

请求体:在POST或PUT请求中,请求体包含客户端发送给服务器的数据,如表单数据或文件内容。

HTTP响应结构

HTTP响应由状态行、响应头和响应体三部分组成。

状态行:包含HTTP版本(如HTTP/1.1)、状态码(如200)和状态消息(如OK)。

响应头:包含服务器返回的附加信息,如Content-Type、Content-Length等。

响应体:包含服务器返回的实际数据,如HTML内容、JSON数据等。

I/O操作

在HTTP通信中,I/O操作主要涉及网络套接字的读写。客户端通过套接字向服务器发送请求,服务器通过套接字返回响应。以下是一个简单的Python示例,展示如何使用socket库进行HTTP请求和接收响应:

关键点

  • 请求方法:GET、POST、PUT、DELETE等,用于指定客户端希望执行的操作。
  • 状态码:如200(成功)、404(未找到)、500(服务器内部错误)等,用于表示请求的处理结果。
  • 头信息:包含元数据,如内容类型、内容长度、缓存控制等,用于控制请求和响应的行为。
  • 体内容:包含实际传输的数据,如HTML、JSON、XML等

nginx的安装与启用

#dnf install nginx -y

#systemctl enable --now nginx        //开启nginx的守护进程

#firewall-cmd --permanent --add-service=http       

#firewall-cmd --reload

#firewall-cmd --list-all

/usr/share/nginx/html--默认发布目录 

/usr/share/nginx/html/index.html--默认发布文件

nginx的主配置文件及其修改

# vim /etc/nginx/nginx.conf

# nginx -s reload        //重新加载主配置文件的修改
# firewall-cmd --permanent --add-port=8080/tcp
# firewall-cmd --reload

nginx发表文件

# echo i am a test_file > /usr/share/nginx/html/test.html
# vim /etc/nginx/nginx.conf
# nginx -t        //检测配置文件中是否有错误
# nginx -s reload        //重载修改的配置

nginx发表目录

创建目录作为新的发行目录并创建发行文件

nginx的访问控制

#dnf install httpd-tools -y

# htpasswd -cm /etc/nginx/.htpasswd fjw
# htpasswd -m /etc/nginx/.htpasswd yyy

# nginx -s reload
# curl 192.168.0.0 -u yyy:123

配置日志

Nginx 支持访问日志和错误日志的配置。

重启和重载 Nginx

在修改配置文件后,需要重启或重载 Nginx 以使更改生效。

检查配置文件语法

在重载或重启 Nginx 之前,建议检查配置文件的语法是否正确。

常用命令

以下是一些常用的 Nginx 命令

# 启动 Nginx
sudo systemctl start nginx

# 停止 Nginx
sudo systemctl stop nginx

# 查看 Nginx 状态
sudo systemctl status nginx

# 重载 Nginx
sudo nginx -s reload

# 检查配置文件语法
sudo nginx -t
 

http://www.xdnf.cn/news/5303.html

相关文章:

  • 选对第三方软件测试公司,项目验收成功率提升90%
  • 构件是一个逻辑概念,还是一个物理概念?
  • cdn 是什么?
  • rust-candle学习笔记12-实现因果注意力
  • 有效的括号(简单)
  • ESP32配置GPIO,实现每0.5秒翻转LED电平
  • python笔记和练习----少儿编程课程【阶段二(二)】
  • C++--类的构造函数与初始化列表差异
  • 抖音视频上传功能测试全维度拆解——从基础功能到隐藏缺陷的深度挖掘
  • 【八股消消乐】项目中如何优化JVM内存分配?
  • [题解]2023CCPC黑龙江省赛 - Ethernet
  • Java多线程同步方法ReentrantLock显式锁实现方式
  • Python数据分析
  • Spring 6.x 详解介绍
  • 【从零实现JsonRpc框架#1】Json库介绍
  • 基于NI-PXI的HIL系统开发
  • MySQL 1366 - Incorrect string value:错误
  • MySQL:视图
  • 串口屏调试 1.0
  • ComfyUI 如何安装ComfyUI_SLK_joy_caption_two
  • window环境下,如何通过USB接口控制打印机
  • 质心均匀体(引力屏蔽技术)
  • 算法训练营第十三天|226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度
  • 多模态大模型中的视觉分词器(Tokenizer)前沿研究介绍
  • 【入门】数字走向II
  • JavaScript 数组去重:11 种方法对比与实战指南
  • 什么是 B2B?2B 产品销售怎么找客户?
  • Unity基础学习(十)Camera组件
  • [ctfshow web入门] web67
  • JVM对象创建内存分配