LNMP构架——Nginx服务

本文详细介绍了如何搭建Nginx服务,包括基本环境配置、负载均衡实现、web虚拟机搭建、动态访问控制、location正则匹配及地址重写等。重点强调了Nginx的高并发能力和强大的页面重写功能,以及在负载均衡中的应用。通过实例展示了Nginx配置文件的修改和测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nginx可以作为:web服务器、反向代理、负载均衡,后面两个功能由upstream模块实现。

ngixn功能更强大,基本可以代替apache服务

ngixn的页面重写功能非常强大。

ngixn工作在应用层。

ngixn可通过正则表达式匹配而访问 不同的URL。

ngixn的抗并发能力机强,一次可抗住10w个并发。

一、搭建Nginx服务的基本环境

       实验环境:  server1(1号):   Nginx服务器      IP:172.25.254.1

                            server2(2号):   web1服务器        IP: 172.25.254.2

                            server3(3号):   web2服务器        IP:172.25.254.3

                            foundation13(client):  测试机          IP:172.25.254.250

          Nginx服务源码包的编译及安装:

1. 下载Nginx服务的软件包,博主这里下载的是压缩包,所以将其解压缩:

2.  注释掉 gcc文件的配置信息:CFLAGS="$CFLAGS -g",目的是不安装在本次实验中多余的软件包。

3. 编译源码包:

首先切换到解压后的nginx-1.10.3目录下:

进行编译:./configure --prefix=/usr/local/nginx   --with-http_ssl_module   --with-http_stub_status_module

http_ssl_module           ## 该模块是https进行加密认证的模块

http_stub_status_module     ## 该模块是nginx信息状态访问控制的模块

出现如下图所示错误(需要解决依赖性):

下载安装依赖软件:yum install pcre-devel -y

继续编译,出现如下错误,缺少软件环境openssL:

下载安装openssl这个软件包:yum install openssl-devel -y

再编译,终于编译成功:

4. 现在进行最后一步:安装  make && make install

上图表示安装完成。

二、nginx负载均衡的实现

1.开始修改配置文件:

首先注意配置文件的第二行,如下图:

因为nginx在运行的过程中需要一个child进程起到在cup和内存之间交互信息的作用,而该进程需要以一个nginx用户的身份,所以需要创建该用户:

添加用户完成后,对第二行做如下配置,表示使nginx进程的用户和用户组都为nginx:

            因为一般服务器有好多个cpu,而正常情况下,进程会在不同的cpu上进行相关运算。比如,当一个进程正在运行,这时又一个优先级较高的进程要先执行,这时候就会断掉该进程,并将该进程的相关程序的内存地址压入堆栈,从而保护现场,当上一个紧急进程执行完后,要出栈恢复现场,这时该进程就会在数个cpu中进行选择,这样在不同cpu间来回选择,总的来说是浪费资源和时间的。所以我们一般会配置使相应的进程和cpu绑定,这样就会解决这个问题。

       下面我们来配置使nginx进程和相应cpu绑定,如下图这种方式就是让nginx服务自动选择cpu与child进程绑定:

        下图是手动绑定的配置方法:

        接着配置nginx的事件驱动模块:

       进行第一步的测试:

先检查有没有语法错误,然后开启服务:

在浏览器访问nginx服务器(IP:172.25.254.1),如下图到达nginx的测试页:

       测试完成,继续配置,现在添加nginx服务的upstream模块(注意:下图25行少写一个大括号):

    为了时上面的配置执行,还需配置一个函数指向该实例,如下图:

   配置完成,保存配置内容并退出。

    为了执行方便,对nginx的执行脚本做一个硬连接:ln  -s  /usr/local/nginx/sbin/nginx  /usr/local/bin/

      然后保存配置,载入配置:

    下面开启2号主机和3号主机的web服务:

     在客户端测试是否能实现负载均衡:

先配置 对1号主机(IP:172.25.254.1)对www.room.com的解析:

如下图所示,实现了对后端web服务器的负载均衡:

 

三、Nginx服务器web虚拟机的搭建:

      1. 配置nginx.conf文件,下图为三个nginxweb虚拟机的配置信息:

       2. 根据每个虚拟机的配置信息,分别创建相应的发布页:

      3. 检查有没有语法错误,然后载入配置信息:

       4. 测试,在client主机上测试,结果如下:

 

四、 nginx的动态访问控制信息的配置:

       我们在刚开始编译ngixn的时候,同时下载了--with-http_stub_status_module, 这个模块的作用就是 控制以及监督访问的作用。

       1. 首先配置主配置文件:

     2. 在上步所要求的路经下建立目录和相关文件:

      3. 配置上步建立的文件:

      4. 在client主机上做status.room.com的解析:

      5. 检测并启动nginx:

      6. 测试结果:

 

五、 nginx 的location正则匹配:

         1. 在nginx.conf中做如下的配置信息:

        2. 在客户端用命令测试: curl -s -o /dev/null -I -w %'{http_code}\n' http://www.room.com/

-s     ##    静音模式,不输出任何东西

-o    ##     把输出写到该文件中

-I     ##      只显示文档信息

-w   ##    用于在一次完整且成功的操作后 输出指定格式的内容到标准输出。

        下图说明: URL完全等于www.room.com时,采用的匹配规则是“location = /”,而当所有location规则都匹配不上URL时,使用默认匹配:

         下图说明正则匹配是优先普通匹配的:

         当匹配涉及到两个正则规则时,匹配谁根据的是两个location规则在nginx.conf文件种的先后位置,谁在前先匹配谁:

        下图说明匹配URL时,是从左至右按最大长度原则(谁匹配度越高,就匹配谁)匹配的。

      下图说明,客户匹配URL时,是从最左边第一个目录或文件名开始的(~*是特殊情况,是从最后一个文件或者目录开始匹配的。)

 

六、nginx的地址重写:

      1.  配置nginx.conf文件,当访问ptm.room.com的时候重定向到suzhao.room.com:

rewrite  ^/(.*)   http://suzhao.room.com/$1   permanent;

          rewrite(重写)为固定关键字,表示开始进行rewrite匹配规则。

          regex(正则表达式)部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址;" ^ " 表示匹配输入字符串的起始位置,  " . "表示匹配除“\n”之外的任何单个字符,   " * "表示匹配前面的字符零次或多次。

          replacement(替换)部分是http://suzhao.room.com/$1, $1是取自regex部分()里的内容。匹配成功后跳转到的URL。

          flag(标记)部分的 permanent表示永久301重定向标记,即永久跳转到新的 http://www.czlun.com/$1 地址上。

   2. 测试:

在client主机的浏览器输入ptm.room.com:

结果发现跳转到了suzhao.room.com de主页面:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值