Nginx 动静分离
一:概述
-
Nginx 的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静态分离技术。
-
针对 PHP 的动静分离:
-
静态页面交给Nginx 处理
-
动态页面交给PHP-FPM模块或 Apache处理
-
在Nginx的配置中,是通过location 配置段配合正则匹配实现静态与动态页面的不同处理方式。
二:反向代理原理
- Nginx 不仅能作为 Web服务器,还具有反向代理、负载均衡和缓存的功能
- Nginx 通过 proxy模块实现将客户端的请求代理至上游服务器,此时nginx与上游服务器的连接是通过http协议进行的
- nginx 在实现反向代理功能时的最重要指令为:proxy_pass ,它的处理逻辑将用户请求调度至上游服务器。
三:实验过程
1、实验准备
一台centos7-12 ,作为 LAMP架构 (192.168.34.144)
一台centos7-2 ,作为 Nginx (192.168.34.143)
2、步骤
在centos7-12中:
(1)首先安装apache
[root@localhost ~]# yum install httpd httpd-devel -y
(2)允许防火墙通过
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=http
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=https
'持久化设置' '公共区域' '开启http和https'
[root@localhost ~]# firewall-cmd --reload ’加载防火墙‘
(3)安装mysql的分支 ----mariadb
[root@localhost ~]# yum install mariadb-server mariadb-libs mariadb-devel -y
[root@localhost ~]# systemctl start mariadb.service ‘开启服务’
[root@localhost ~]# netstat -ntap | grep 3306 ‘查看是否能运行’
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3489/mysqld
[root@localhost ~]# mysql_secure_installation ‘安全安装’
‘按回车 -- y -- 输密码 -- n -- n -- n -- y’
(4)安装php 插件
[root@localhost ~]# yum install php -y
[root@localhost ~]# yum install php-mysql -y ‘建立php和mysql关联’
[root@localhost ~]# yum install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devdel php-bcmath -y ‘可解析php和各种插件’
(5)创建php首页
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# vim index.php ‘创建php首页’
<?php
phpinfo();
?>
[root@localhost html]# systemctl start httpd.service ‘开启服务’
LAMP 架构搭建好了,可以解析php
在centos7-2 中:
1、创建一个目录,挂载共享文件,再进行压缩
[root@nginx ~]# mkdir /abc
[root@nginx ~]# mount.cifs //192.168.10.29/share /abc
[root@nginx abc]# tar zxvf nginx-1.12.2.tar.gz -C /opt/
2、创建运行用户
[root@nginx opt]# cd nginx-1.12.2/
[root@nginx nginx-1.12.2]# useradd -M -s /sbin/nologin nginx ‘创建运行用户’
3、安装环境包,再编译
[root@nginx nginx-1.12.2]# yum install pcre-devel zlib-devel gcc gcc-c++ -y ‘安装环境包’
[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
4、创建一个软链接和 nginx的启动脚本
[root@nginx nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin '创建软链接 ,优化路径'
[root@nginx nginx-1.12.2]# vim /etc/init.d/nginx ‘创建nginx的启动脚本’
#!/bin/bash
#chkconfig: 345 85 15
#description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/bginx.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 {star|stop|restart|reload}"
exit 1
esac
exit 0
[root@nginx nginx-1.12.2]# chmod +x /etc/init.d/nginx ‘给权限’
[root@nginx nginx-1.12.2]# chkconfig --add nginx ‘添加到nginx列表中’
5、修改 Nginx 的配置文件,将PHP文件请求转发到 Apache 处理
[root@nginx nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf ‘修改配置文件’
6、有两种方式验证, 用elinks验证,直接在centos7-2中显示
[root@nginx nginx-1.12.2]# yum install elinks -y ‘网页的验证,远程可查看字符界面网页’
[root@nginx nginx-1.12.2]# service nginx start
[root@nginx nginx-1.12.2]# netstat -ntap | grep 80 ‘启动nginx’
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 41608/nginx: master
[root@nginx nginx-1.12.2]# systemctl stop firewalld.service ‘关闭防火墙’
[root@nginx nginx-1.12.2]# setenforce 0
[root@nginx nginx-1.12.2]# elinks http://192.168.34.143/ ‘输入虚拟主机的IP地址,会出现以下界面’
点击 OK ,再按 q ,点击yes
7、还可以在win10客户机上验证, 输入虚拟主机地址 192.168.34.143/index.html ,出现以下界面
(静态请求)