Kylin麒麟操作系统 | Nginx服务部署

目录

  • 一、理论储备
    • 1. Nginx概述
    • 2. Nginx与Apache的区别
    • 3. Nginx的服务配置
  • 二、任务实施
    • 任务1 Nginx的编译安装
      • 1. Server配置
      • 2. 客户端测试
    • 任务2 Nginx反向代理
      • 1. Server1配置
      • 2. Server2配置
      • 3. 客户端测试

一、理论储备

1. Nginx概述

Nginx是一个轻量级的web服务器,相比apache来说资源消耗更低。支持高并发的web服务和反向代理服务,支持基于IMAP/POP3/SMTP协议的邮件服务。同时也支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等模块功能。并且支持很多第三方的模块扩展。

Nginx主进程/工作进程

  • 一个主进程master:负载加载和分析配置文件、管理工作进程、平滑升级
  • 多个工作进程worker:处理并响应用户请求

2. Nginx与Apache的区别

静态文件处理能力:Nginx高于Apache

资源消耗:Nginx优于Apache,以为Nginx是异步非阻塞处理模型,只需要几个进程就能够处理大量在线请求,而Apache仍然是进程模型或线程模型,也就是采用大量线程来处理大量在线请求。

  • Nginx支持IO多路复用实现进程高并发,高效处理客户端请求
  • Apache支持的模块很多而且也比较稳定。而Nginx因为出现时间比较晚,比不上Apache
  • Nginx自身就是一个反向代理服务器,支持七层负载均衡
  • Nginx处理动态页面比不上Apache,一般只用于处理静态页面和反向代理

3. Nginx的服务配置

在光盘镜像中默认是不存在nginx的安装包的,需要采取编译安装或者下载对应的安装包

  • 主配置文件:/etc/nginx/nginx.conf
  • 源码安装配置目录 :/usr/local/nginx/conf/
  • 相关的配置文件:fastcgi、uwsgi、scgi
  • 支持的mime类型:mime.types
  • Nginx的主程序文件(基于源码安装):/usr/local/nginx/sbin/nginx

Nginx的主配置文件文件结构

  1. main block字段:全局配置信息
  2. events字段:服务程序性能参数、事件驱动相关配置
  3. http字段:配置网站访问参数、http/https 协议的相关配置
  4. server字段:针对网站配置参数
  5. location字段:站点目录相关配置
  6. stream字段:一般的TCP代理或负载均衡配置

正常运行必备的配置参数

  • user xxx:定义启动nginx工作进程的用户
  • PID /xx/xx/xx:指定存储nginx主进程的进程号码的文件路径
  • include xxx:指明包含进来的其它配置文件片段
  • load_module xxx:指明要装载的动态模块

性能优化的相关配置参数

  • worker_processes xxx:work进程数量(默认为1),根据服务器的CUP数量设定,最大不超过CPU数量的2倍
  • worker_cpu_affinity xxx:worker与CPU进行绑定,做nginx服务器可以使用此配,如果存在其它只要程序不建议使用
  • worker_priority xxx:指定worker进程的nice值,设定worker进程优先级
  • worker_rlimit_nofile xxx:worker进程所能够打开的文件数量上限

调试、定位相关配置参数

  • daemon on|off:是否以守护进程方式运行Nginx
  • master_process on|off:是否以master/worker模型运行Nginx(默认为on)
  • error_log file:错误日志记录

二、任务实施

任务1 Nginx的编译安装

节点设计

主机网络信息作用
Server192.168.110.1/24Nginx服务器
Client192.168.110.10/24测试客户端

1. Server配置

[Step1]: 尝试使用yum进行安装nginx

yum install -y nginx

在这里插入图片描述

[Step2]: 下载源码包软件

wget http://nginx.org/download/nginx-1.20.1.tar.gz

在这里插入图片描述

[Step3]: 安装nginx依赖,默认已经安装

yum -y install pcre-devel zlib-devel openssl-devel

在这里插入图片描述

[Step4]: 解压源码包,进入解压目录下

tar -xf nginx-1.20.1.tar.gz
cd nginx-1.20.1

在这里插入图片描述

[Step5]: 执行configure,指定安装目录,生成Makefile文件

./configure --prefix=/usr/local/nginx
  • –prefix=/usr/local/nginx:指定nginx的安装路径,指定的目录无需手动创建
    在这里插入图片描述

[Step6]: 编译安装的过程如果过慢了,可以适当给虚拟机的CPU核心数增加一点

make && make install

在这里插入图片描述

[Step7]: 启动nginx,查看监听端口

/usr/local/nginx/sbin/nginx				# 启动nginx
ss -ntlp | grep nginx		# 查看nginx的监听端口

在这里插入图片描述

[Step8]: 关闭SELinux,调整防火墙策略

firewall-cmd --add-service=http --permanent
firewall-cmd --reload
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

2. 客户端测试

[Step1]: 客户端访问Nginx测试页

在这里插入图片描述

任务2 Nginx反向代理

  • 在Server1和Server2上通过编译安装Nginx
  • 在Server1上部署反向代理,将请求转发至Server2

节点设计

主机网络信息作用
Server1192.168.110.1/24Nginx代理
Server2192.168.110.2/24Web服务器
Client192.168.110.10/24测试客户端

1. Server1配置

Server1在上述步骤中已经安装过Nginx

[Step1]: 修改服务配置文件

vim /usr/local/nginx/conf/nginx.conf# 在localtion字段中添加下列内容
proxy_pass http://192.168.110.2:80;		# 将接收到的请求转发192.168.110.2上的80端口
proxy_set_header Host $host;
# 设置转发请求时携带的Host请求头。$host变量表示原始请求中的Host头字段值,这通常是请求的目标主机名,在浏览器中会显示请求端口
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 后端Web服务器可以获取请求客户端的真实IP地址

在这里插入图片描述

[Step2]: 校验配置文件语法

/usr/local/nginx/sbin/nginx -t

在这里插入图片描述

[Step3]: 在不中断服务的前提下,重启加载配置文件内容

/usr/local/nginx/sbin/nginx -s reload

2. Server2配置

[Step1]: 利用scp从Server1上下载Nginx源码包

scp root@192.168.110.1:/root/nginx-1.20.1.tar.gz .

在这里插入图片描述

[Step2]: 将Nginx源码包解压缩,然后进入解压目录下

tar -xf nginx-1.20.1.tar.gz
cd nginx-1.20.1/

[Step3]: 执行configure,指定安装目录,生成Makefile文件

./configure --prefix=/usr/local/nginx

[Step4]: 编译安装

make && make install 

[Step5]: 启动nginx,查看监听端口

/usr/local/nginx/sbin/nginx 
ss -tlup | grep nginx

[Step6]: 增加索引页

echo Kylin2024 > /usr/local/nginx/html/index.html

[Step7]: 关闭SELinux,调整防火墙策略

firewall-cmd --add-service=http --permanent
firewall-cmd --reload
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

3. 客户端测试

[Step1]: 客户端访问Nginx测试页,可以看到访问的IP地址为Server1,但是已经被转发到Server2上

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

类OCSP靶场-Kioptrix系列-Kioptrix Level 1

一、前情提要 二、实战打靶 1. 信息收集 1.1. 主机发现 1.2. 端口扫描 1.3 目录爆破 1.4. 敏感信息 2.根据服务搜索漏洞 2.1. 搜索exp 2.2. 编译exp 2.3. 查看exp使用方法,并利用 3. 提权 二、第二种方法 一、前情提要 Kioptrix Level是免费靶场&#x…

Golang囊地鼠gopher

开发知识点-golang 介绍红队专题-Golang工具Fscan简介主要功能ubuntu 安装windows 安装常用命令:项目框架源文件common目录Plugins目录Webscan目录入口点插件扫描类型爆破插件common.ScantypeWebtitle函数webpoc扫描POC 执行CEL-GO 实践CEL指纹识别免杀源码特征参考链接红队专…

快速上手Spring注解、SpringAop

1 Spring 注解的使用 1 IOC 的概念 IOC(Inversion of Control):控制反转。 使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。通俗的讲就…

前端面经-总结篇 http

下面是我在过去12天内,学习关于http的前端面经汇总。现在只是一些很基础的知识,后续还会补充,算是对之前学习的一个总结。 前端面经整理-CSDN博客 我主要参考的题目来源在这里。 本地存储 localstorage(本地存储)和…

功能篇:SpringBoot 实现静态、动态定时任务,本地动态定时任务调度

在Spring Boot中实现静态和动态定时任务可以通过使用Scheduled注解来配置静态的调度任务,以及通过编程方式创建动态的调度任务。下面我将分别介绍这两种方式。 ### 静态定时任务 对于静态定时任务,你可以直接在方法上使用Scheduled注解,并指定…

服务器ubuntu重装系统后将原来的用户进行关联

服务器ubuntu重装系统后将原来的用户数据进行关联 关联用户到已存在目录 sudo useradd user_name -m -s /bin/bash -d /home***/name添加sudo权限 vim /etc/sudoers# 文件末尾添加 user_name ALL(ALL:ALL) ALL更改拥有者 sudo chown -R user_name:user_name /home***/na…

数据地图怎么做?推荐这款数据可视化地图生成器

在数字化与信息化高速发展的今天,企业迎来了前所未有的发展机遇,规模迅速扩张,市场版图不断延伸。然而,伴随着这种快速的发展,一个不容忽视的问题逐渐浮出水面——如何精准高效地掌握分布在各地的分公司、业务点乃至整…

鸿蒙项目云捐助第九讲鸿蒙App应用的捐助详情页功能实现

鸿蒙项目云捐助第九讲鸿蒙App应用的捐助详情页功能实现 这里接下来继续实现捐助详情页的布局页面,也就是当用户进入到分类页面后,点击分类的每一个商品就进入到捐助商品的详情页,这里的布局可以从下面的模板演化而来。 下面根据这个模板来进…

docker mysql挂载

在提供的 docker run 命令中,已经挂载了三个卷到 MySQL 容器中:日志目录、数据目录和配置目录。然而,还没有挂载一个包含 cube_admin.sql 文件的目录。要将 SQL 文件放入容器中并在 MySQL 中执行它,可以按照以下步骤操作&#xff…

【数学】矩阵的逆与伪逆 EEGLAB

文章目录 前言matlab代码作用EEGLAB 中的代码总结参考文献 前言 在 EEGLAB 的使用中,运行程序时出现了矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND 1.873732e-20 的 bug,调查 EEGLAB 后发现是 raw 数据的问题。 matlab代码 A_1 …

【蓝凌表单】JSP组件常用语法整理

JSP组件常用语法整理 必填非必填写法//必填 $("[name=extendDataFormInfo.value(fd_344677482769e2)]").attr("validate","requiredvalue"); //非必填 $(

Redis 数据备份与恢复

Redis 数据备份与恢复 1. 引言 Redis 作为一款高性能的键值数据库,被广泛应用于各种场景,如缓存、消息队列等。由于其重要性,对 Redis 数据进行定期备份是保证数据安全的关键措施。本文将详细介绍 Redis 数据的备份与恢复方法,确保在数据丢失或系统故障时能够迅速恢复。 …

音视频入门基础:MPEG2-TS专题(17)——FFmpeg源码中,解析TS program map section的实现

一、引言 由《音视频入门基础:MPEG2-TS专题(16)——PMT简介》可以知道,PMT表(Program map table)由一个或多个段(Transport stream program map section,简称TS program map sectio…

华为HarmonyOS NEXT 原生应用开发:鸿蒙中组件的组件状态管理、组件通信 组件状态管理小案例(好友录)!

文章目录 组件状态管理一、State装饰器1. State装饰器的特点2. State装饰器的使用 二、Prop装饰器(父子单向通信)1. Prop装饰器的特点2. Prop装饰器的使用示例 三、Link装饰器(父子双向通信)1. Link装饰器的特点3. Link使用示例 四…

Pytorch | 对比Pytorch中的十种优化器:基于CIFAR10上的ResNet分类器

Pytorch | 对比Pytorch中的十种优化器:基于CIFAR10上的ResNet分类器 CIFAR10数据集ResNet提出背景网络结构特点工作原理优势 代码实现分析utils.pymain.py导入必要的库设备选择与数据预处理定义加载训练集和测试集主函数部分训练部分测试部分 结果10种优化器对应的训…

Linux系统操作03|chmod、vim

上文: Linux系统操作02|基本命令-CSDN博客 目录 六、chmod:给文件设置权限 1、字母法 2、数字法(用的最多) 七、vim:代码编写和文本编辑 1、启动和退出 1️⃣启动 2️⃣退出 2、vim基本操作 六、chmod&#x…

【漏洞复现】eking管理易Html5Upload接口存在任意文件上传漏洞

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 【漏洞复现】eking管理易Html5Upload接口存在任意文件上传漏洞 一、漏洞概述1.1漏洞简介1.2组件描述1.3漏洞描述二、漏洞复现2.1 应用协议2.2 环境搭建2.3 漏洞复现三、…

徐州数字孪生工业互联网可视化技术,赋能新型工业化智能制造工厂

#徐州数字孪生工业互联网#在当下智能制造的热潮之下,徐州作为中国制造业的重要基地,正积极拥抱数字化转型,通过数字孪生工业互联网可视化技术,赋能新型工业化智能制造工厂,引领制造业向更高效、更智能、更绿色的方向发…

C# 探险之旅:第二十四节 - 类型class基础,一场“类”似的奇妙冒险

嘿,勇敢的探险家们!欢迎来到C#王国的“类”似奇妙冒险!今天,我们要深入探索一个神秘而强大的领域——class(类)。想象一下,class就像C#世界里的一块魔法土地,每块土地上都能孕育出独…

解决MyBatis在 Oracle 中使用 IN 语句不能超过 1000 问题

在 Oracle 数据库中,IN 语句常用于查询某个字段是否属于一组特定的值。对于大多数开发者而言,IN 是一种简单直观的查询方式,能够提升开发效率,避免过多的 OR 语句。然而,许多人在使用 IN 语句时可能遇到一个问题&#…