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

目录

  • 一、理论储备
    • [1. Nginx概述](#1. Nginx概述)
    • [2. Nginx与Apache的区别](#2. Nginx与Apache的区别)
    • [3. Nginx的服务配置](#3. Nginx的服务配置)
  • 二、任务实施
    • [任务1 Nginx的编译安装](#任务1 Nginx的编译安装)
      • [1. Server配置](#1. Server配置)
      • [2. 客户端测试](#2. 客户端测试)
    • [任务2 Nginx反向代理](#任务2 Nginx反向代理)
      • [1. Server1配置](#1. Server1配置)
      • [2. Server2配置](#2. Server2配置)
      • [3. 客户端测试](#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的编译安装

节点设计

主机 网络信息 作用
Server 192.168.110.1/24 Nginx服务器
Client 192.168.110.10/24 测试客户端

1. Server配置

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

bash 复制代码
yum install -y nginx

[Step2]: 下载源码包软件

bash 复制代码
wget http://nginx.org/download/nginx-1.20.1.tar.gz

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

bash 复制代码
yum -y install pcre-devel zlib-devel openssl-devel

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

bash 复制代码
tar -xf nginx-1.20.1.tar.gz
cd nginx-1.20.1

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

bash 复制代码
./configure --prefix=/usr/local/nginx
  • --prefix=/usr/local/nginx:指定nginx的安装路径,指定的目录无需手动创建

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

bash 复制代码
make && make install

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

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

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

bash 复制代码
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

节点设计

主机 网络信息 作用
Server1 192.168.110.1/24 Nginx代理
Server2 192.168.110.2/24 Web服务器
Client 192.168.110.10/24 测试客户端

1. Server1配置

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

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

bash 复制代码
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]: 校验配置文件语法

bash 复制代码
/usr/local/nginx/sbin/nginx -t

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

bash 复制代码
/usr/local/nginx/sbin/nginx -s reload

2. Server2配置

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

bash 复制代码
scp [email protected]:/root/nginx-1.20.1.tar.gz .

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

bash 复制代码
tar -xf nginx-1.20.1.tar.gz
cd nginx-1.20.1/

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

bash 复制代码
./configure --prefix=/usr/local/nginx

[Step4]: 编译安装

bash 复制代码
make && make install 

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

bash 复制代码
/usr/local/nginx/sbin/nginx 
ss -tlup | grep nginx

[Step6]: 增加索引页

bash 复制代码
echo Kylin2024 > /usr/local/nginx/html/index.html

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

bash 复制代码
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上

相关推荐
一只专注api接口开发的技术猿30 分钟前
1688 API 自动化采集实践:商品详情实时数据接口开发与优化
大数据·运维·数据库·自动化
又逢乱世35 分钟前
Ubuntu 安装 Nginx
运维·nginx
静听山水3 小时前
Hive表JOIN性能问
大数据
完美世界的一天4 小时前
ES面试题系列「一」
大数据·elasticsearch·搜索引擎·面试·全文检索
Caron_xcb4 小时前
大数据基础——Ubuntu 安装
大数据·linux·ubuntu
好吃的肘子5 小时前
ElasticSearch入门详解
java·大数据·elasticsearch·搜索引擎·云原生
IvanCodes5 小时前
四、Hive DDL表定义、数据类型、SerDe 与分隔符核心
大数据·hive·hadoop
matrixlzp7 小时前
Nginx yum 安装
nginx
IvanCodes8 小时前
三、Hadoop1.X及其组件的深度剖析
大数据·hadoop·分布式
matrixlzp8 小时前
Nginx 使用 Keepalived 搭建 nginx 高可用
运维·nginx