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

06-01 863阅读

以下所使用的环境为:

虚拟化软件:VMware Workstation 17 Pro

麒麟系统版本:Kylin-Server-V10-SP3-2403-Release-20240426-x86_64

一、Nginx概述

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

Nginx主进程/工作进程

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

    Nginx模块结构

    • 核心模块:HTTP模块、EVENT模块、MAIL模块
    • 基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块
    • 第三方模块:HTTP Upstream Request Hash模块、Notice模块、HTTP Access Key模块

      二、Nginx与Apache的区别

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

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

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

        三、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:错误日志记录

                四、Nginx的安装

                1. YUM安装

                [Step1]: 连接互联网,编辑本地仓库文件

                vim /etc/yum.repos.d/nginx.repo
                # 在文件中输入以下内容
                [Nginx]
                name=nginx download
                baseurl=http://nginx.org/packages/centos/8/x86_64/
                enabled=1
                gpgcheck=0
                

                [Step2]: 使用yum安装nginx

                yum -y install nginx
                

                [Step3]: 查看nginx的安装文件

                rpm -ql nginx
                

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

                2. 源码编译安装

                [Step1]: 连接互联网,下载源码包

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

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

                [Step2]: 安装nginx的依赖包

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

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

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

                [Step4]: 执行configure,生成Makefile文件,将软件安装到/usr/local/nginx目录下,无需提前创建该目录

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

                [Step5]: 编译安装

                make && make install
                

                [Step6]: 查看nginx的安装目录,可以看到存在一个sbin目录,里面存放着nginx命令

                tree /usr/local/nginx
                

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

                Nginx的服务管理

                • 配置文件测试:/usr/local/nginx/sbin/nginx -t
                • 启动Nginx服务:/usr/local/nginx/sbin/nginx
                • 关闭Nginx服务:/usr/local/nginx/sbin/nginx -s quit/stop
                • 重新加载Nginx服务:/usr/local/nginx/sbin/nginx -s reload

                  [Step7]: 可以将Nginx命令的位置添加到环境变量中,在运行nginx命令时就无需添加命令位置

                  echo "PATH=$PATH:/usr/local/nginx/sbin" >> /etc/profile
                  source /etc/profile		# 重新加载配置
                  

                  [Step8]: 启动Nginx服务,并调整防火墙策略

                  nginx
                  firewall-cmd --add-service=http --permanent
                  firewall-cmd --reload
                  

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

                  [Step9]: 可以访问到Nginx的测试页

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

                  [Step10]: 停止Nginx服务

                  【-s】参数用于向Nginx主进程发送信号,信号值有:stop、quit、reopen、reload

                  nginx -s quit
                  

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

                  3. 配置文件结构

                  查看源码安装目录(/usr/local/nginx)下的配置目录(/conf)

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

                  我们可以看到在配置目录下存在两个nginx.conf和nginx.conf.default文件,通过对比发现,内容完全一样

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

                  4. 主配置文件结构

                  Nginx主配置文件结构

                  1. **main block字段:**全局配置
                  2. **events字段:**事件驱动的相关配置
                  3. **http字段:**http/https协议相关的配置
                  4. **mail:**邮件协议的相关配置
                  5. **stream字段:**一般的TCP代理或负载均衡配置

                  正常运行必备的配置参数

                  1. **user name:**启动Nginx工作进程的用户
                  2. **pid xxx/xxx/xxx:**指定存储Nginx主进程的进程号的文件路径
                  3. **include xxx:**包含进来的其他配置文件片段
                  4. **load_module xxx:**指定要装载的动态模块

                  配置参数的注意事项

                  1. 每条参数必须以分号结尾
                  2. 支持使用配置变量
                    • 内建变量:由Nginx模块引入,可以直接使用
                    • 自定义变量:由用户set命令定义,例如:set name value;
                    • 引用变量:$name

                  性能优化相关配置参数

                  • work_processes 1:work进程数量默认为1,根据服务器的CPU数量设定,最大不应该超过CPU数量的2倍
                  • **work_cpu_affinity auto:**worker与CPU进行绑定,做Nginx服务器可以使用此配置,由其它重要程序运行,不建议使用
                  • **worker_priority number:**指定woker进程的nice值,设定worker进程的优先级(-20 ~ 20)
                  • **worker_rlimit_nofile number:**worker进程所能够打开的文件数量上限

                    [Step1]: 通过egrep过滤掉配置文件中的注释行和空行

                    cat /usr/local/nginx/conf/nginx.conf.default | egrep -v "#|^$"    
                    

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

                    [Step2]: 通过上述的配置文件我们可以发现,【worker_processes 1;】默认值为1。通过ps命令查看进程可以看到存在1个worker process进程

                    ps -aux | grep nginx
                    

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

                    [Step3]: 修改配置文件中的worker_processes数值为2,重启Nginx后,可以看到多增加了一个worker process进程

                    sed -i "s/worker_processes  1;/worker_processes  2;/g" /usr/local/nginx/conf/nginx.conf
                    nginx -s reload
                    

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

                    五、Nginx负载均衡策略

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

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

                    六、基于IP过滤设置限制用户访问

                    实验需求

                    • Kylin-1作为Nginx服务器,网页页面内容为:Hello Kylin!
                    • 允许192.168.110.2主机访问Nginx服务,禁止其它主机访问并返回404。

                      节点设计

                      主机网络信息说明
                      Kylin-1192.168.110.1/24Nginx服务器
                      Kylin-2192.168.110.2/24测试客户端
                      Kylin-3192.168.110.3/24测试客户端

                      [Step1]: Kylin-1配置:备份Nginx测试页,新建索引页

                      cd /usr/local/nginx/
                      mv html/index.html html/index.html.bak
                      echo "Hello Kylin!" > html/index.html
                      

                      [Step2]: Kylin-1配置:编辑主配置文件

                      vim conf/nginx.conf
                      # 修改Server块中内容
                      allow 192.168.110.2;
                      deny all;
                      f ( $remote_addr !~ "192.168.110.2" ) {
                          return 404;
                      }
                      

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

                      [Step3]: Kylin-1配置:检测配置文件,然后重启Nginx服务

                      nginx -t
                      nginx -s reload
                      

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

                      [Step4]: 验证:在Kylin-2上访问Web页面

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

                      [Step5]: 验证:在Kylin-3上访问Web页面

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

                      七、基于Nginx实现反向代理

                      实验需求

                      • 在Kylin-1和Kylin-2上安装Nginx服务
                      • 在Kylin-2上部署反向代理,将请求转发至Kylin-1

                        节点设计

                        主机网络信息说明
                        Kylin-1192.168.110.1/24Web服务器
                        Kylin-2192.168.110.2/24Nginx代理
                        Kylin-3192.168.110.3/24测试客户端

                        [Step1]: Kylin-1配置:在上述的实验中已经安装过Nginx,这里需要将IP过滤的相关配置删除

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

                        [Step2]: 验证:测试访问Kylin-1上的Web服务

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

                        [Step3]: Kylin-2配置:安装Nginx及相关配置

                        tar xf nginx-1.20.1.tar.gz
                        cd nginx-1.20.1/
                        yum install pcre-devel opnessl-devel zlib-devel
                        ./configure --prefix=/usr/local/nginx
                        make && make install
                        echo "PATH=$PATH:/usr/local/nginx/sbin" >> /etc/profile
                        source /etc/profile
                        

                        [Step4]: Kylin-2配置:编辑Nginx配置文件,增加反向代理配置

                        cd /usr/local/nginx/conf/
                        vim nginx.conf
                        # 在http块中添加下列内容
                        upstream kylin2{
                        	server 192.168.110.2:80;
                        }
                        server{
                        	localtion / {
                        		proxy_pass http://kylin2;
                        	}
                        }
                        

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

                        [Step5]: Kylin-2配置:检测配置文件,启动Nginx服务,调整防火墙策略

                        nginx -t
                        nginx
                        ps -aux | grep nginx
                        firewall-cmd --add-service=http --permanent
                        firewall-cmd --reload
                        

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

                        [Step6]: 验证:使用Kylin-3测试访问,可以看到访问的是Kylin-2,但是显示的页面内容是Kylin-1上内容

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

                        八、基于Nginx实现负载均衡

                        实验需求

                        • 在Kylin-1、Kylin-2、Kylin-3上安装Nginx服务
                        • 将Kylin-3设置为负载均衡,轮询访问Kylin-1、Kylin-2
                        • 其中Kylin-1站点网页内容为:Hello Kylin!
                        • Kylin-2站点网页内容为:Bye Kylin!

                          节点设计

                          主机网络信息说明
                          Kylin-1192.168.110.1/24Web服务器
                          Kylin-2192.168.110.2/24Web服务器
                          Kylin-3192.168.110.3/24负载均衡器

                          [Step1]: Kylin-2配置:在上述的实验中已经安装过Nginx,这里需要将反向代理配置删除

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

                          [Step2]: Kylin-2配置:在Kylin-2上添加索引文件,重新启动Nginx服务

                          cd /usr/local/nginx/html/
                          mv index.html index.html.bak
                          echo "Bye Kylin!" > index.html
                          nginx -s reload
                          

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

                          [Step3]: Kylin-3配置:安装Nginx及相关配置

                          yum install -y pcre-devel openssl-devel zlib-devel
                          tar xf nginx-1.20.1.tar.gz
                          cd ngq
                          cd nginx-1.20.1/
                          ./configure --prefix=/usr/local/nginx
                          make && make install
                          echo "PATH=$PATH:/usr/local/nginx/sbin" >> /etc/profile
                          source /etc/profile
                          

                          [Step4]: Kylin-3配置:Nginx负载均衡配置,轮询策略

                          cd /usr/local/nginx/conf/
                          vim nginx.conf
                          # 在http块中添加下列内容
                          http{
                          	upstream load{
                          		server 192.168.110.1:80;
                          		server 192.168.110.2:80;
                          	}
                          	server{
                          		location / {
                          			proxy_pass http://load;
                          		}
                          	}
                          }
                          

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

                          [Step5]: Kylin-3配置:启动Nginx服务,调整防火墙策略

                          nginx
                          firewall-cmd --add-service=http --permanent
                          firewall-cmd --reload
                          

                          [Step6]: 验证:使用主机的访问负载均衡器,不断刷新页面,可以看到页面内容的变化

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

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

                          [Step7]: Kylin-3配置:Nginx负载均衡配置,ip hash策略

                          IP哈希策略根据客户端IP计算出哈希值,然后把请求分配给该数值对应的被代理服务器。在哈希值不变且被代理服务器可用的前提下,同一客户端的请求始终会被分配到同一台被代理服务器上。

                          cd /usr/local/nginx/conf/
                          vim nginx.conf
                          # 在http块中添加下列内容
                          http{
                          	upstream load{
                          		hash $remote_addr consistent;		# 保持一致
                          		server 192.168.110.1:80;
                          		server 192.168.110.2:80;
                          	}
                          	server{
                          		location / {
                          			proxy_pass http://load;
                          		}
                          	}
                          }
                          

                          [Step8]: 验证:重启nginx服务,使用主机连续访问负载均衡器,可以看到页面没有发生变化

                          nginx -s reload
                          

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

                          [Step9]: Kylin-3配置:Nginx负载均衡配置,加权策略

                          cd /usr/local/nginx/conf/
                          vim nginx.conf
                          # 在http块中添加下列内容
                          http{
                          	upstream load{
                          		server 192.168.110.1:80 weight=1;
                          		server 192.168.110.2:80 weight=2;
                          	}
                          	server{
                          		location / {
                          			proxy_pass http://load;
                          		}
                          	}
                          }
                          

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

                          [Step10]: 验证:重启nginx服务,访问负载均衡器,第1个页面为Kylin-2,第2个页面为Kylin-2,第3个页面为Kylin-1,第4个页面为Kylin-2

                          nginx -s reload
                          

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

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

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

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码