Nginx動靜分離

Nginx動靜分離

Nginx動靜分離介紹
Nginx的靜態處理能力很強,但是動態處理能力不足,因此,在企業中常用動靜分離技術
針對PHP的動靜分離
靜態頁面交給Nginx處理動態頁面交給PHP-FPM模塊或Apache處理
在Nginx的配置中,是通過location配置段配合正則匹配實現靜態與動態頁面的不同處理方式
反向代理原理
Nginx不僅能作爲Web服務器,還具有反向代理、負載均衡和緩存的功能
Nginx通過proxy模塊實現將客戶端的請求代理至上游服務器,此時nginx與上游服務器的連接是通過http協議進行的
Nginx在實現反向代理功能時的最重要指令爲proxy_pass, 它能夠並能夠根據URI、客戶端參數或其它的處理邏輯將用戶請求調度至上游服務器
配置Nginx實現動靜分離
本案例根據企業需要,將配置Nginx實現動靜分離,對php頁面的請求轉發給LAMP處理,而靜態頁面交給Nginx處理以實現動靜分離

配置Nginx實現動靜分離

配置步驟
架設並調試後端LAMP環境
安裝配置Nginx處理靜態頁面請求,在server {};段中加入
[root@nginx php5]#vim /usr/local/httpd/conf/nginx.conf
location ~ .*.(gifliglipeg|bmp|swf)$ {
root html;
index index.html index.htm;
};
配置步驟
配置Nginx處理動態頁面請求,在server{};中加入
在Apache.工作目錄新建test.php
重啓Nginx並測試
[root@nginx php5]#vim /usr/local/httpd/conf/nginx.conf
server {
......
location ~ .php$ {
proxy_ pass http://192.168.9.237:8080; //LAMP的IP地址

......

Nginx動靜分離實驗

簡易搭建LAMP架構

yum install httpd httpd-devel -y                             //使用yum安裝架構
systemctl start httpd.service                              //啓動服務
[root@localhost ~]# firewall-cmd --permanent --zone=public  --add-service=http              //防火牆公共區域增加http協議
success
[root@localhost ~]# firewall-cmd --permanent --zone=public  --add-service=https            //防火牆公共區域增加https協議
success
[root@localhost ~]# firewall-cmd --reload                             //重載防火牆
success
[root@localhost ~]# yum install mariadb mariadb-server mariadb-libs mariadb-devel -y
//使用yum安裝MYSQL數據庫,mariadb數據庫管理系統是MYSQL數據庫的分支
[root@localhost ~]# systemctl start  mariadb                            //啓動數據庫
[root@localhost ~]# mysql_secure_installation                         //設置數據庫
Enter current password for root (enter for none):                    //此處單擊回車鍵
Set root password? [Y/n] y                                         //確定設置密碼
New password:                                                           //輸入密碼,自己定義
Re-enter new password:                                             //再次確認密碼輸入
Remove anonymous users? [Y/n] n                           //否定移除所有匿名用戶
Disallow root login remotely? [Y/n] n                         //否定使用root身份遠程登錄
Remove test database and access to it? [Y/n] n                //否定刪除測試數據庫並訪問它
Reload privilege tables now? [Y/n] y                                      //確定重載數據庫
[root@localhost ~]# yum -y install php                                           //使用yum安裝php
[root@localhost ~]# yum install php-mysql -y                               //建立php和mysql關聯
[root@localhost ~]# 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@localhost ~]# cd /var/www/html                                 //進入站點目錄
[root@localhost html]# vim index.php                                //編輯php網頁

<?php
  phpinfo();
?>

[root@localhost html]# systemctl restart httpd.service         //重啓服務

使用測試機輸入192.168.131./index.php訪問Apache網頁
Nginx動靜分離

在另一臺虛擬機上安裝配置Nginx

mount.cifs //192.168.100.3/LNMP-C7 /mnt        //掛載到/mnt目錄下

解壓源碼包到/opt目錄下

[root@localhost ~]# cd /abc                                                       //切換到掛載點目錄
[root@localhost abc]# ls
Discuz_X3.4_SC_UTF8.zip    nginx-1.12.2.tar.gz
mysql-boost-5.7.20.tar.gz  php-7.1.10.tar.gz
[root@localhost abc]# tar zxvf nginx-1.12.2.tar.gz -C /opt        //解壓Nginx源碼包到/opt下
[root@localhost abc]# cd /opt/                                                  //切換到解壓的目錄下
[root@localhost opt]# ls
nginx-1.12.2  rh

安裝編譯需要的環境組件包

[root@localhost opt]# yum -y install \
gcc \                                              //c語言
gcc-c++ \                                      //c++語言
pcre-devel \                                  //pcre語言工具
zlib-devel                                     //數據壓縮用的函式庫

創建程序名爲nginx的用戶並編譯Nginx

[root@localhost opt]# useradd -M -s /sbin/nologin nginx     //創建程序用戶,限定其
[root@localhost opt]# cd nginx-1.12.2/                                //切換到nginx目錄下
[root@localhost nginx-1.12.2]# ./configure \                        //配置nginx
> --prefix=/usr/local/nginx \                                                  //安裝路徑
> --user=nginx \                                                                   //用戶名
> --group=nginx \                                                                 //用戶組
> --with-http_stub_status_module                                       //訪問狀態統計模塊

編譯和安裝

[root@localhost nginx-1.12.0]# make && make install                               //編譯及安裝

製作Nginx管理腳本,便於管理使用

[root@localhost nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ 
                                                                                        //創建軟連接                                                                 [root@nginx nginx-1.12.2]# vim /etc/init.d/nginx             //編輯啓動腳本
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx 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
[root@nginx nginx-1.12.2]# chmod +x /etc/init.d/nginx                  //給腳本執行權限
[root@nginx nginx-1.12.2]# chkconfig --add nginx                        //添加到service管理器中
[root@nginx nginx-1.12.2]# yum install elinks -y                           //
[root@nginx nginx-1.12.2]# service nginx start                             //啓動Nginx服務
[root@nginx nginx-1.12.2]# netstat -ntap | grep 80
tcp        0      0 0.0.0.0:80        0.0.0.0:*          LISTEN      42028/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.18.136/                                                                                                            

訪問Nginx網頁
此時訪問192.168.131.133/html
Nginx動靜分離
如果輸入:http://192.168.18.136/index.php 則無法處理
Nginx動靜分離

修改Nginx配置文件開啓動靜分離

[root@localhost init.d]# vim /usr/local/nginx/conf/nginx.conf ##修改配置文件

 location ~ \.php$ {           //找到此處將註釋去除,開啓動靜分離
    proxy_pass   http://192.168.131.133;         //填寫動態處理的Apache的服務器地址
    }

[root@localhost init.d]# service nginx stop //關閉服務
[root@localhost init.d]# service nginx start //開啓服務

此時輸入:http://192.168.131.133/index.php 這個網址可以得到如下界面
因爲此處交給Apache去處理php的請求
Nginx動靜分離

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章