1. 程式人生 > >實驗:基於nginx反向代理的lnamp搭建WordPress,並實現動靜分離

實驗:基於nginx反向代理的lnamp搭建WordPress,並實現動靜分離

手動 add 顯示 匿名用戶 namp 組合 分離 secure html

一、實驗環境:

1.各軟件版本:

系統版本:CentOS Linux release 7.4.1708 (Core)
php版本:PHP 7.2
nginx版本:nginx-1.12.2
數據庫版本:MariaDB 10
WordPress版本:4.9.4
關閉防火墻與selinux

2.實驗架構及IP分配:

nginx反向代理一臺:
IP:192.168.1.105 10.66.16.111安裝nginx
nginx WEB服務器一臺
IP:10.66.16.11 安裝nginx
Apache+PHP服務器一臺
IP:10.66.16.22 安裝httpd+PHP
MySQL服務器一臺
IP:10.66.16.33 安裝MariaDB

3.默認各服務器已安裝好所需軟件,不再詳述安裝過程。

>PS:要註意的一點時,在以前安裝PHP解析環境時都是用的nginx+php,他們之間是通過php-fpm(fastcgi協議)通
>信的,在安裝PHP時安裝php72w-fpm這個依賴包,因為nginx與PHP之間只能以這種方式通信,但httpd與PHP可以
>通過mod方式進行通行,所以AP組合需要安裝mod_php這個依賴包,httpd便能解析php了,雖然httpd也能通過
>php-fpm來解析PHP,但需要另外配置。

二:測試
1.nginx WEB服務器:
在10.66.16.11上安裝完nginx並啟動服務後,創建測試html文件

vim /usr/share/nginx/html/test.html

<h1>nginx web server</h1>

瀏覽器輸入10.66.16.11/test.html並顯示以下頁面
2.Apache+PHP服務器
在10.66.16.22上安裝完成Apache+PHP並啟動服務後,創建phpinfo測試文件
vim /var/www/html/phpinfo.php

<?php
   phpinfo();
?>   

瀏覽器輸入10.66.16.22/phpinfo.php並顯示以下界面就說明Apache可以正常解析PHP文件了。
3.測試nginx反向代理功能,其實配置起來非常簡單。
vim /etc/nginx/conf.d/proxy.conf

server {
        listen 80;
        server_name www.ready.cn;
        index index.php;
        location / {
                }
        location ~* \.(png|jpg|jepg|gif|bmp|html)$ {
                proxy_pass http://10.66.16.11;
                }
        location ~* \.php$ {
                proxy_pass http://10.66.16.22;
                }
}

本機的hosts文件添加本地域名重定向規則192.168.1.105 www.ready.cn
systemctl start nginx #啟動nginx服務
在瀏覽器分別輸入http://www.ready.cn/test.html和http://www.ready.cn/phpinfo.php並顯示與測試步驟1,2相同的界面就說明nginx以作為反向代理工作了
4.配置數據庫
mysql_secure_installation #初始化數據庫,設置root密碼,匿名用戶權限等
mysql -uroot -p123456 #登入數據庫進行用戶及庫的創建與配置
>GRANT ALL PRIVILEGES ON *.* TO ‘mysql‘@‘%‘IDENTIFIED BY ‘123456‘ WITH GRANT OPTION; #創建賬戶mysql,密碼為123456,並允許任意IP訪問此賬戶數據庫,權限為ALL
>CREATE DATABASE wordpress; #創建名為wordpress的庫,安裝完WordPress後會要求在數據庫創建庫,這裏事先創建好
>quit
將下載好的WordPress放入nginx反向代理服務器,nginx服務器,AP服務器相應的主目錄,具體過程這裏不再贅述。具體可參考另外兩篇博文。

三:對nginx反向代理服務器做功能補充與優化
雖然以上步驟完成後已經可以成功的將動態與靜態內容分離到後端不同服務器進行處理,但還需要優化使性能更完整。

1.啟動proxy緩存功能
在proxy上編輯主配置文件
vim /etc/nginx/nginx.conf
在http模塊下添加如下規則:
proxy_cache_path /data/nginx/cache levels=1:1:1 keys_zone=pcache:10m max_size=2g; #指定緩存目錄為/data/nginx/cache,目錄結構為3級,每級16個子目錄,鍵表名為pcache大小為10m,緩存最大占用空間為2g,目錄需手動創建
定義完緩存參數後,需要在定義的主機上調用緩存
vim /etc/nginx/conf.d/proxy.conf
    server {
        listen 80;
        server_name www.ready.cn;
        index index.php;
        proxy_cache pcache; #調用緩存
        proxy_cache_key $request_uri; #把什麽當鍵
        proxy_cache_methods GET HEAD; #緩存哪些項
        proxy_cache_valid 200 302 10m; #指定200 302響應碼的內容緩存10分鐘
        proxy_cache_valid 404      1m; #指定404響應碼的內容緩存1分鐘
        proxy_cache_use_stale http_502; #允許502響應碼的內容使用過期緩存
        proxy_set_header X-Real-IP $remote_addr;  #將實際的客戶端IP發送至後端服務器
        add_header X-Via $server_addr; #將代理服務器的IP發至後端服務器
        location / {
                proxy_pass http://10.66.16.22:80/;
                }
        location ~* \.(png|jpg|jepg|gif|bmp|html)$ {
                proxy_pass http://10.66.16.11:80;
                proxy_set_header X-Real-IP $remote_addr;  #將實際的客戶端IP發送至後端服務器
                add_header X-Via $server_addr; #將代理服務器的IP發至後端服務器
                }
        location ~* \.php$ {
                proxy_pass http://10.66.16.22:80;
                proxy_set_header X-Real-IP $remote_addr;  #將實際的客戶端IP發送至後端服務器
                add_header X-Via $server_addr; #將代理服務器的IP發至後端服務器
                }
}

四.用ab進行壓測,比較開啟緩存功能和沒有開啟緩存功能的區別

實驗:基於nginx反向代理的lnamp搭建WordPress,並實現動靜分離