Nginx动静分离(理论+实验)

馋奶兔 提交于 2020-02-02 02:04:19

前言:

  • 因nginx的静态处理能力很强,但动态处理能力不足,所以在企业中常采用动静分离技术
  • 针对PHP,将静态页面交给nginx处理,动态页面交给PHP-FPM模块或Apache处理
  • 在nginx的配置文件中,是通过location配置段配合正则匹配来实现静态与动态页面的不同处理方式
  • 在企业信息化应用环境中,服务器的安全性和响应速度需要根据实际情况进行相应参数配置,以达到最优的用户体验
  • 默认的nginx安装参数只能供最基本的服务,还需要调整如网页缓存时间,连接超时,网页压缩等相应参数,餐能发挥出服务器的最大作用

一、Nginx+Apache动静分离原理

1.1 Nginx动静分离概述
  • Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术

  • 针对PHP的动静分离

    静态页面交给 Nginx处理

    动态页面交给 PHP-FPM模块或 Apache处理

  • 在 Nginx的配置中,是通过 ocation配置段配合正则匹配实现静态与动态页面的不同处理方式

1.2 反向代理的原理

  • Nginx不仅能作为Web服务器,还具有反向代理、负载均衡和缓存的功能
  • Nginx通过 proxy模块实现将客户端的请求代理至上游服务器,此时ngInx与上游服务器的连接是通过http协议进行的
  • Nginx在实现反向代理功能时的最重要指令为proxy pass,它能够并能够根据UR、客户端参数或其它的处理逻辑将用户请求调度至上游服务器
1.3 Nginx实现动静分离配置
1.3.1 动静分离需求
  • 我们根据需要,将配置Nginx实现动静分离,对php页面的请求转发给LAMP处理,而静态页面交给Nginx处理,从而实现动静分离
1.3.2 配置重点
  • ① 部署LAMP
  • ② 安装、调整Nginx,修改主配置文件,在server {}段中加入以下内容
location ~.*\.(gif|jpg|jpeg|bmp|swf)${
    root html;
    index index.html index.htm;
};
  • ③ 在Apache工作目录中创建test.php
  • ④ 重启Nginx,进行测试

小结:我们配置的思路,就是将静态页面的处理交给Nginx,动态页面的处理则交给PHP-FPM模块或者Apache。

二、Nginx+Apache动静分离(实验)

环境:准备两台centos7虚拟机,一台为LAMP架构,一台为Nginx

2.1 搭建LAMP架构
2.1.1 Apache服务安装与配置
  • 安装Apache服务
[root@lamp ~]# yum -y install httpd httpd-devel
  • 添加防火墙规则(实验可选)
[root@lamp ~]# firewall-cmd --permanent --zone=public --add-service=http
[root@lamp ~]# firewall-cmd --permanent --zone=public --add-service=https
[root@lamp ~]# firewall-cmd --reload
#允许http、https服务通过,reload刷新防火墙规则

实验中也可以直接关闭防火墙

[root@lamp ~]# systemctl stop firewalld.service
[root@lamp ~]# setenforce 0
  • 开启Apache服务
[root@lamp ~]# systemctl start httpd.service
2.1.2 mariadb数据库安装配置
  • 安装mariadb环境包
[root@lamp ~]# yum install mariadb mariadb-server mariadb-libs mariadb-devel -y

mariadb 较mysql而言是轻量级的数据库,安装便利,在对配置文件进行个性化设置后即可使用

  • 开启数据库
[root@lamp ~]# systemctl start mariadb.service 
[root@lamp ~]# netstat -natp | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      3341/mysqld 
  • 配置数据库项
    在这里插入图片描述

在这里插入图片描述

2.1.3 php安装与配置
  • 安装php、php与mysql的关联包
[root@lamp ~]# yum -y install php
[root@lamp ~]# yum install php-mysql -y
  • 安装php插件
[root@lamp ~]# yum install -y php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-bcmath
  • 调整php首页信息
[root@lamp ~]# cd /var/www/html/
[root@lamp html]# ls
[root@lamp html]# vim index.php
<?php
  phpinfo();
?>
------->wq
  • 重启Apache服务
[root@lamp html]# systemctl stop httpd.service 
[root@lamp html]# systemctl start httpd.service 
2.1.4 测试

在这里插入图片描述

2.2 Nginx安装、配置
2.2.1 Nginx安装
  • 下载共享文件并解压
[root@nginx ~]# mount.cifs //192.168.181.1/LAMP-C7 /mnt
Password for root@//192.168.181.1/LAMP-C7:  
[root@nginx ~]# cd /mnt/LNMP-C7/
[root@nginx LNMP-C7]# ls
Discuz_X3.4_SC_UTF8.zip    php-5.6.11.tar.bz2
jdk-6u14-linux-x64.bin     php-7.1.10.tar.bz2
mysql-boost-5.7.20.tar.gz  php-7.1.20.tar.bz2
ncurses-5.6.tar.gz         php-7.1.20.tar.gz
nginx-1.12.2.tar.gz        zend-loader-php5.6-linux-x86_64_update1.tar.gz
[root@nginx LNMP-C7]# tar xzvf nginx-1.12.2.tar.gz -C /opt
  • 创建程序用户
[root@nginx LNMP-C7]# useradd -M -s /sbin/nologin/ nginx
  • 安装环境包
[root@nginx LNMP-C7]# yum install pcre-devel zlib-devel gcc gcc-c++ -y
  • 编译
[root@nginx LNMP-C7]# cd /opt/nginx-1.12.2/
[root@nginx nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module
[root@nginx nginx-1.12.2]# make && make install
  • 创建软链接
[root@nginx nginx-1.12.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin
  • 创建启动脚本
[root@nginx nginx-1.12.2]# vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 99 20
# description: Ngi nix Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
  start)
     $PROG
     ;;
  stop)
     kill -s QUIT $(cat $PIDF)
     ;;
  restart)
     $0 stop
     $0 start
     ;;
  reload)
     kill -s HUP $(cat $PIDF)
     ;;
   *)
           echo "Usage: $0 {start|stop|restart|reload}"
           exit 1
esac
exit 0
------》wq
[root@nginx init.d]# chmod +x nginx 
  • 启动服务
[root@nginx init.d]# chkconfig --add nginx 
[root@nginx init.d]# chkconfig --level 35 nginx on
[root@nginx init.d]# service nginx start
[root@nginx init.d]# netstat -natp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6020/nginx: master  
[root@nginx init.d]# systemctl stop firewalld.service 
[root@nginx init.d]# setenforce 0
2.2.2 Nginx配置
  • 开启反向代理功能
[root@nginx init.d]# vim /usr/local/nginx/conf/nginx.conf
        location ~ \.php$ {
            proxy_pass   http://192.168.181.129;
        }
#在nginx主配置文件59行位置将反向代理功能开启,并修改地址指向LAMP服务器即可
  • 重启服务
[root@nginx init.d]# service nginx stop
[root@nginx init.d]# service nginx start
2.3 访问测试
  • 使用一台win10虚拟机访问Nginx服务器地址进行测试

在这里插入图片描述

总结:

本篇博客介绍了Nginx+ Apache实现动静分离的操作过程,在之后会介绍Nginx网页优化~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!