Nginx動靜分離介紹
- Nginx的靜態處理能力很強,可是動態處理能力不足,所以,在企業中經常使用動靜分離技術
- 針對PHP的動靜分離
靜態頁面交給Nginx處理
動態頁面交給PHP-FPM模塊或Apache處理
- 在Nginx的配置中,是經過location配置段配個正則匹配實現靜態與動態頁面的不一樣處理方式
反向代理原理
- Nginx不只能做爲web服務器,還具備反向代理,負載均衡和緩存的功能
- Nginx經過proxy模塊實現將客戶端的請求代理至上游服務器,此時Nginx與上游服務器的鏈接是經過http協議進行的
- Nginx在實現反向代理功能時最重要指令爲proxy_pass,它可以根據URI,客戶端參數或其餘的處理邏輯將用戶請求調度至上游服務器
實驗環境
LAMP服務器(192.168.13.139)
Nginx服務器(192.168.13.140)
一,搭建LAMP(簡易搭建)
1,安裝Apache服務,並容許經過防火牆進行訪問
[root@lamp ~]# yum install httpd httpd-devel -y ##安裝http服務及開發包
[root@lamp ~]# systemctl start httpd.service ##開啓服務
[root@lamp ~]# firewall-cmd --permanent --zone=public --add-service=http ##防火牆容許http
success
[root@lamp ~]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@lamp ~]# firewall-cmd --reload ##重啓防火牆
success
2,安裝mariadb數據庫
[root@lamp ~]# yum install mariadb mariadb-server mariadb-libs mariadb-devel -y
##安裝數據庫
[root@lamp ~]# systemctl start mariadb ##開啓數據庫
[root@lamp ~]# netstat -ntap | grep 3306 ##查看端口號3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2200/mysqld
[root@lamp ~]# mysql_secure_installation ##設置數據庫
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y ##設置root密碼
New password: ##輸入密碼
Re-enter new password: ##確認密碼
Remove anonymous users? [Y/n] n ##容許匿名訪問
... skipping.
Disallow root login remotely? [Y/n] n ##容許遠程登陸
... skipping.
Remove test database and access to it? [Y/n] n ##保留測試數據庫
... skipping.
Reload privilege tables now? [Y/n] y ##重啓數據庫
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
3,安裝PHP,並進行數據庫關聯
[root@lamp ~]# yum install php -y ##安裝PHP
[root@lamp ~]# yum install php-mysql -y ##創建php和mysql關聯
[root@lamp ~]# yum install -y \
> php-gd ##GD庫是php處理圖形的擴展庫
> php-ldap ##輕量級目錄訪問協議
> php-odbc ##應用程序編程接口
> php-pear ##擴展應用代碼庫
> php-xml php-xmlrpc ##xml文件
> php-mbstring ##多字節字符串
> php-snmp ##管理端開發
> php-soap ##SOAP 擴展能夠用來提供和使用 Web Services
> curl curl-devel ##支持數據文件下載工具
> php-bcmath ##BCMath庫來支持更加精確的計算
4,切換到站點,編輯網頁內容
[root@lamp ~]# cd /var/www/html/ ##切換到站點
[root@lamp html]# vim index.php ##編輯php網頁內容
<?php
phpinfo();
?>
5,測試網頁
[root@lamp html]# vim index.php ##編輯php網頁內容
<?php
echo "apache web !"
?>
二,安裝Nginx
1,在Linux上使用遠程共享獲取文件並掛載到mnt目錄下
[root@localhost ~]# smbclient -L //192.168.100.3/ ##遠程共享訪問
Enter SAMBA\root's password:
Sharename Type Comment
--------- ---- -------
LNMP-C7 Disk
[root@localhost ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt ##掛載到/mnt目錄下
2,解壓源碼包到/opt下,並查看
[root@localhost ~]# cd /mnt ##切換到掛載點目錄
[root@localhost mnt]# ls
Discuz_X3.4_SC_UTF8.zip nginx-1.12.2.tar.gz
mysql-boost-5.7.20.tar.gz php-7.1.20.tar.gz
[root@localhost mnt]# tar zxvf nginx-1.12.2.tar.gz -C /opt ##解壓Nginx源碼包到/opt下
[root@localhost mnt]# cd /opt/ ##切換到解壓的目錄下
[root@localhost opt]# ls
nginx-1.12.2 rh
3,安裝編譯須要的環境組件包
[root@localhost opt]# yum -y install \
gcc \ //c語言
gcc-c++ \ //c++語言
pcre-devel \ //pcre語言工具
zlib-devel //數據壓縮用的函式庫
4,建立程序用戶nginx並編譯Nginx
[root@localhost opt]# useradd -M -s /sbin/nologin nginx ##建立程序用戶,安全不可登錄狀態
[root@localhost opt]# id nginx
uid=1001(nginx) gid=1001(nginx) 組=1001(nginx)
[root@localhost opt]# cd nginx-1.12.0/ ##切換到nginx目錄下
[root@localhost nginx-1.12.0]# ./configure \ ##配置nginx
> --prefix=/usr/local/nginx \ ##安裝路徑
> --user=nginx \ ##用戶名
> --group=nginx \ ##用戶組
> --with-http_stub_status_module ##狀態統計模塊
5,編譯和安裝
[root@localhost nginx-1.12.0]# make ##編譯
...
[root@localhost nginx-1.12.0]# make install ##安裝
...
[root@localhost nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
##建立軟鏈接讓系統識別nginx啓動腳本
6,製做管理腳本,便於使用service管理使用
[root@localhost nginx]# cd /etc/init.d/ ##切換到啓動配置文件目錄
[root@localhost init.d]# ls
functions netconsole network README
[root@localhost init.d]# vim nginx ##編輯啓動腳本文件
#!/bin/bash
# chkconfig: - 99 20 ##註釋信息
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx" ##設置變量爲nginx命令文件
PIDF="/usr/local/nginx/logs/nginx.pid" ##設置變量PID文件 進程號爲5346
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@localhost init.d]# chmod +x /etc/init.d/nginx ##給啓動腳本執行權限
[root@localhost init.d]# chkconfig --add nginx ##添加到service管理器中
[root@localhost init.d]# service nginx stop ##就可使用service控制nginx
[root@localhost init.d]# service nginx start
7,安裝elinks測試Nginx網頁
[root@localhost init.d]# yum install elink -y ##安裝軟件
[root@localhost init.d]# netstat -ntap | grep 80 ##查看Nginx端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 44663/nginx: master
[root@localhost init.d]# systemctl stop firewalld.service ##關閉防火牆
[root@localhost init.d]# setenforce 0
[root@localhost init.d]# elinks http://192.168.13.140/ ##測試網頁
8,訪問Nginx網頁
三,修改Nginx配置文件開啓動靜分離
[root@localhost init.d]# vim /usr/local/nginx/conf/nginx.conf ##修改配置文件
location ~ \.php$ { ##找到此處將註釋去除,開啓動靜分離
proxy_pass http://192.168.13.139; ##填寫動態處理的Apache的服務器地址
}
[root@localhost init.d]# service nginx stop ##關閉
[root@localhost init.d]# service nginx start ##開啓
四,測試網頁(192.168.13.140)
實現了動靜分離處理,Nginx處理靜態,Apache處理動態信息
謝謝閱讀!