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

C++学习之游戏服务器开发十二nginx和http

目录

1.容器运行游戏需求分析

2.静态编译游戏服务

3.手动创建游戏镜像

4.编写游戏启动脚本

5.脚本创建游戏服务器镜像

6.登录服务器架构选择

7.http协议初识

8.http报文分析

9.nginx简介和安装

10.nginx配置静态页面

11.nginx配置反向代理


1.容器运行游戏需求分析

2.静态编译游戏服务

3.手动创建游戏镜像

docker 的三大核心概念
镜像
静态的一组环境的集合
运行:创建容器,在容器中运行 XXXX
手动创建:
下载原始镜像
在基于该镜像运行 bash ,装所需软件
将装好软件的容器提交为新的镜像
脚本创建:
Dockerfile :规定镜像创建的过程
构建镜像

4.编写游戏启动脚本

容器
运行时的一组环境,基于某个镜像创建
容器的修改不会影响镜像 运行容器:
守护运行 -d
端口映射 : -p 外端口号 : 内端口号
共享文件系统: -v 外绝对路径 : 内绝对路径
容器开始于要运行的进程,结束于进程退出
删掉所有容器:
仓库( dockerhub
类似 github ,是一个存储镜像的公共仓库
docker pull 作者 / 镜像名 : 标签名 拉去镜像
docker push 分享镜像到仓库中(分享之前先改名 -- docker tag

5.脚本创建游戏服务器镜像

脚本创建 docker 镜像
1. 指定基础镜像( FROM XXXX
2. 装环境( RUN WORKDIR COPY
3. 指定执行点( ENTRYPOINT
ENTRYPOINT ["XXX"]
XXX 是且仅是镜像所运行的程序
CMD 命令指定你的内容会作为 XXX 的参数
run 镜像名 xxxx xxxx 会作为 XXX 的参数
CMD ["XXX"]
镜像缺省运行 XXX 程序
run 镜像名 xxxx :容器会执行 xxxx 程序

6.登录服务器架构选择

离线分发镜像
导出容器: docker export -o XXX.tar af85: 将容器中固化的内容导
导入镜像: docker import XXX.tar my_image:my_tag :导入的镜像
只包含原容器内的文件系统,缺失了镜像执行点,暴露端口,原镜
像的构建历史
查询程序依赖的动态库
ldd 程序名
do 1 cdocker rm `docker ps -aq` 静态编译游戏服务程序(部分依赖库静态链接到程序中的动
态编译)
原因:不想在容器中装诸多依赖项
查当前程序的依赖项
添加所有 依赖项 .a Makefile 的依赖中
去掉 Makefile -l 指定的链接库

7.http协议初识

8.http报文分析

脚本创建游戏服务器镜像
有可执行的程序,有姓名文件,有启动脚本
指定工作路径
拷贝文件
暴露端口
指定执行点(执行脚本)
登陆服务器架构选择
BS 架构
效率要求不高,客户端向和服务器之间的数据交互比较单一:一条
请求对应一条回复
http 协议承载数据

9.nginx简介和安装

http 协议
超(基于字符编码多媒体)文本(字符串)传输(基于短连接 tcp
协议
请求或回复头: 属性名:属性值
http 请求(浏览器 --- 》服务器)
GET 请求(只有请求头)
POST 请求(头 + 身体):头和身体直接有两个回车
http 回复(服务器 --- 》浏览器)
类型决定于请求类型
包含头和身体
头:状态吗( 200--- 》成功)
身体: html 文件(显示为网页)

10.nginx配置静态页面

Nginx
概念:轻量化 web 服务器(高效的处理 http 报文)
apt 或者 yum 安装
配置文件目录: /etc/nginx/
日志配置文件: /var/log/nginx/
测试命令: nginx -t
重新加载配置文件: nginx -s reload
nginx 配置静态页面
创作一个 html 文件
html 文件放到 server 配置段指定的 root 目录下
location 配置段: index html 文件名(指定首页)
浏览器输入 192.168.64.148/XXXX.html-----> 服务器会向浏览器返
XXXX.html 的内容

11.nginx配置反向代理

nginx 配置反向代理
规划 url 和对应的网页服务器
proxy_pass 被代理的服务 ;
http://www.xdnf.cn/news/1252.html

相关文章:

  • 从信息泄露到内网控制
  • STM32外部中断与外设中断区别
  • 数据结构——队列
  • 华为交换机命令笔记
  • 【springsecurity oauth2授权中心】将硬编码的参数提出来放到 application.yml 里 P3
  • C++23 中 static_assert 和 if constexpr 的窄化布尔转换
  • Agent智能体ReAct机制深度解读:推理与行动的完美闭环
  • 实战华为1:1方式1 to 2 VLAN映射
  • hbuilderx云打包生成的ipa文件如何上架
  • 发送百度地图的定位
  • 7.6 GitHub Sentinel后端API实战:FastAPI高效集成与性能优化全解析
  • OpenCV中的透视变换方法详解
  • 【AI模型学习】Swin Transformer——优雅的模型
  • 【含文档+PPT+源码】基于微信小程序的健康饮食食谱推荐平台的设计与实现
  • 【微知】git reset --soft --hard以及不加的区别?
  • 入住刚装修好的新房,房间隔音太差应该怎么办?
  • Unity 带碰撞的粒子效果
  • OpenVINO教程(三):使用NNCF进行模型量化加速
  • MATLAB Coder 应用:转换 MATLAB 代码至 C/C++ | 实践步骤与问题解决
  • 【Pandas】pandas DataFrame truediv
  • 【程序员 NLP 入门】词嵌入 - 上下文中的窗口大小是什么意思? (★小白必会版★)
  • RESTful API 设计原则
  • 深度学习基石:神经网络核心知识全解析(一)
  • Curl用法解析
  • 前端频繁调用后端接口问题思考
  • 2025年4月22日(平滑)
  • 【Python笔记 03 】运算符
  • n8n更新1.87后界面报错Connection lost解决
  • 如何精准查询住宅IP?工具、方法与注意事项
  • HTML5+CSS3+JS小实例:CSS太阳动画特效