Nginx动静分离
- Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术
- 针对PHP的动静分离
静态页面交给 Nginx处理
动态页面交给 PHP-FPM模块或 Apache处理 - 在 Nginx的配置中,是通过 ocation配置段配合正则匹配实现静态与动态页面的不同处理方式
反向代理的原理
- Nginx不仅能作为Web服务器,还具有反向代理、负载均衡和缓存的功能
- Nginx通过 proxy模块实现将客户端的请求代理至上游服务器,此时ngInx与上游服务器的连接是通过http协议进行的
- Nginx在实现反向代理功能时的最重要指令为proxy pass,它能够并能够根据UR、客户端参数或其它的处理逻辑将用户请求调度至上游服务器
Nginx动静分离实验
实验需求
将配置 Nginx实现动静分离,对php页面的请求转发给LAMP处理,而静态页面交给Nginx处理,以实现动静分离
推荐步骤
LAMP服务器配置
1.用yum工具安装httpd服务
[root@promote ~]# yum -y install httpd httpd-devel
2.在公共区域设置允许http和https通过
[root@promote ~]# firewall-cmd --permanent --zone=public --add-service=http
[root@promote ~]# firewall-cmd --permanent --zone=public --add-service=https
[root@promote ~]# firewall-cmd --reload ##重新加载防火墙
!
3.关闭防护系统启动apache服务
[root@promote ~]# setenforce 0
[root@promote ~]# systemctl start httpd
4. 安装轻量级的数据库工具mariadb
[root@promote ~]# yum -y install mariadb mariadb-server mariadb-libs mariadb-devel
[root@promote ~]# systemctl start mariadb ##启动服务
5.设置mysql
[root@promote ~]# mysql_secure_installation
Remove anonymous users? [Y/n] n ##是否删除匿名用户
... skipping.
Disallow root login remotely? [Y/n] n ##是否拒绝root进行远程登录 ... skipping.
Remove test database and access to it? [Y/n] n ##是否删除测试数据库 ... skipping.
Reload privilege tables now? [Y/n] y ##是否决定重载权限列表 ... Success!
[root@promote ~]# yum -y install php ##安装php
[root@promote ~]# yum -y install php-mysql ##安装php依赖mysql的工具包
6.用yum安装php的插件包
[root@promote ~]# 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
7. 在首页中写入信息
[root@promote ~]# cd /var/www/html/
[root@promote html]# ls
[root@promote html]# vim index.php
<?php
phpinfo();
?>
8.重启httpd服务,访问呢网站192.168.148.135/index.php
Nginx虚拟机配置
1.启动另一台虚拟机改名为nginx,手工编译安装nginx
[root@promote ~]# setenforce 0
[root@promote ~]# iptables -F
[root@promote ~]# hostnamectl set-hostname nginx
[root@promote ~]# yum -y install gcc \ gcc-c++ \ make \ pcre-devel \ expat-devel \ perl \ zlib-devel \ pcre ##安装环境包
[root@promote ~]# useradd -M -s /sbin/nologin nginx ##创建用户管理
[root@promote ~]# ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module
make编译和make install ##编译安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin ##nginx命令执行路径优化
[root@nginx nginx-1.12.2]# vim /lib/systemd/system/nginx.service ##配置启动脚本归systemctl管理
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile =/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -S HUP $MAINPID
ExecStop=/usr/bin/kill -S QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@nginx nginx-1.12.2]# chmod 754 /lib/systemd/system/nginx.service ##给予权限
[root@nginx nginx-1.12.2]# yum -y install elinks ##安装网页管理工具
[root@nginx system]# systemctl start nginx ##用systemclt去启动nginx
10.修改配置文件,将动态请求交给148.135的地址区处理
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
location ~ \.php$ {
proxy_pass http://192.168.148.135;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
- 重启服务,再次访问验证结果