nginx动静分离配置_Nginx 动静分离与负载均衡的实现
一、前提
企業(yè)中,隨著用戶的增長,數(shù)據(jù)量也幾乎成幾何增長,數(shù)據(jù)越來越大,隨之也就出現(xiàn)了各種應(yīng)用的瓶頸問題。
問題出現(xiàn)了,我們就得想辦法解決,一般網(wǎng)站環(huán)境,均會使用LAMP或者LNMP,而我們對于網(wǎng)站環(huán)境的優(yōu)化,除了對源代碼進行優(yōu)化、SQL慢查詢優(yōu)化 、SQL創(chuàng)建索引等之外,我們還可以對環(huán)境架構(gòu)進行優(yōu)化與擴展。
因此,我們引入了 Nginx 對站點實現(xiàn)負載均衡和動靜分離,來加快訪問速度。
二、Nginx 動靜分離與負載均衡的實現(xiàn)機制
Nginx 動靜分離與負載均衡的的實現(xiàn)離不開反向代理,什么是反向代理呢?反向代理主要應(yīng)用于集群環(huán)境中,有多個客戶端給Nginx服務(wù)器發(fā)送的請求,當(dāng) Nginx 服務(wù)器接收到之后,會按照一定的規(guī)則將請求分發(fā)給了后端的業(yè)務(wù)處理服務(wù)器,此時,請求的來源也就是客戶端,是明確的,但是請求具體由哪臺服務(wù)器處理,并不明確,在這里,Nginx 所扮演的就是一個反向代理角色。通過反向代理,我們無法直接看到后端服務(wù)器的服務(wù)器信息,因此反向代理具有隱藏業(yè)務(wù)服務(wù)器的作用!
三、Nginx 反向代理實現(xiàn)
1、網(wǎng)絡(luò)拓撲
2、環(huán)境準備
我們準備好7臺服務(wù)器,2 臺 MySQL 數(shù)據(jù)庫做高可用,4 臺 Web 服務(wù)器,其中 2 臺裝 Nginx+PHP 做動態(tài)頁面的負載均衡,另外 2 臺裝 Apache+PHP 做靜態(tài)頁面的負載均衡,1 臺 Nginx 服務(wù)器,做反向代理服務(wù)器。
至于,服務(wù)器環(huán)境的安裝部署,這里就不進行操作了,如有疑問的,可以留言或者查看小弟前面的文章。
3、Nginx 服務(wù)器中 Nginx 服務(wù)配置文件修改
修改 http 部分
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
1、重新定義 Nginx 服務(wù)的日志記錄格式,關(guān)于關(guān)鍵字的釋義,大佬們可以參閱官網(wǎng)。
2、使用 upstream 關(guān)鍵字定義后端服務(wù)器
格式:uptream + 后端節(jié)點組名稱(可自定義)
server + IP地址 + 權(quán)重 + 最大失敗次數(shù) + 失敗超時時間 意思是:當(dāng)后端節(jié)點連續(xù)兩次在3秒內(nèi)無法連接時,將放棄連接該節(jié)點,Nginx 將客戶端請求發(fā)送給下一節(jié)點。
修改 server 部分,這里配置為 Nginx 虛擬機
[root@nginx ~]# vim /wdata/nginx/config/80.conf
1、配置 Nginx location 匹配
分別配置以 .html 、.jpeg 、.jpg 、.gif 、.png 、.php 為擴展名的文件的 location 規(guī)則。
proxy_set_header:允許重新定義或添加字段傳遞給代理服務(wù)器的請求頭。該值可以包含文本、變量和它們的組合。在本例中意思將真實的客戶端地址添加到代理服務(wù)器的請求頭中。
proxy_pass:設(shè)置反向代理的連接,格式為:proxy_pass + http://后端節(jié)點組的名稱; 。
X-Forwarded-For:簡稱 XFF 頭,它代表客戶端,也就是 HTTP 的請求端真實的 IP ,只有在通過了 HTTP 代理或者負載均衡服務(wù)器時才會添加該項。
$remote_addr:遠端地址,也就是客戶端 IP 地址
2、配置站點日志,這里將日志格式指定為我們在 HTTP 部分配置為的 main 規(guī)則。
Nginx 反向代理的配置請參照圖中進行修改,其他詳細的配置參數(shù),請參閱官網(wǎng),后續(xù)繼續(xù)更新。
四、后端 Nginx 服務(wù)節(jié)點配置
后端 Nginx 服務(wù)器節(jié)點主要用來做以 .php 擴展名結(jié)尾的站點文件的訪問和圖片文件的訪問,做到將圖片資源單獨剝離,以降低服務(wù)器負載。
1、配置以 .php 為擴展名的站點服務(wù)器
[root@weba config]# vim 80.conf
如上圖:
a、listen:配置監(jiān)聽端口,這里配置為 80 端口,在生產(chǎn)環(huán)境中,我們可能會配置成 443 端口。
server_name:配置域名,這里是實驗環(huán)境,因此采用默認未配置域名。
index:配置支持的文件類型
root:配置全局站點路徑
b、配置局部站點路徑、fastcgi的地址端口(指的是php-fpm的監(jiān)聽地址及端口)、所支持的文件類型等
c、配置日志文件
Nginx 站點的配置大概做到這種配置,基本就可以進行訪問,如果在企業(yè)中需要更復(fù)雜的配置,請參考官方文檔。
2、配置單獨的圖片資源站點
[root@weba config]# vim 81.conf
如上圖:
配置方式跟 1 的配置完全一樣,只是修改一下圖片資源的路徑即可。
WebA 和 WebB 的配置完全一樣。最后修改完配置別忘了刷新,用命令:service nginx reload 即可
五、后端 Apache 服務(wù)節(jié)點配置
1、Apache 服務(wù)節(jié)點的配置基本也跟 Nginx 差不多,我們這里使用命令修改 Apache 配置文件。
[root@webc ~]# sed -i "s#/home/wwwroot/default#/wdata/http/www#g" /usr/local/apache/conf/httpd.conf
[root@webc ~]# sed -i "s#/home/wwwroot/default#/wdata/http/www#g" /usr/local/apache/conf/extra/httpd-vhosts.conf
[root@webc ~]# sed -i "s#/var/log/wwwlogs#/var/log/wwwlogs#g" /usr/local/apache/conf/httpd.conf
[root@webc ~]# sed -i "s#/var/log/wwwlogs#/var/log/wwwlogs#g" /usr/local/apache/conf/extra/httpd-vhosts.conf
[root@webc ~]# sed -i "s#/var/www#/wdata/http/www#g" /usr/local/apache/conf/extra/httpd-vhosts.conf
在 WebC 和 WebD 中分別執(zhí)行,主要設(shè)置網(wǎng)站根目錄和日志目錄。
2、修改 Apache 的端口和監(jiān)聽地址
[root@webc ~]# vim /usr/local/apache/conf/httpd.conf
找到 Listen 行,修改為 0.0.0.0:80
如圖:
3、修改 Apache 日志文件格式,方便我們更好閱讀 Apache 日志,也可以保持默認。
找到 行,在下面的注釋下面添加
LogFormat "%a - %A %t "%B" "%b" "%{Foobar}C" "%f" - %h - %H "%{Foobar}i" %m "%{Foobar}n" "%{Foobar}o" - "%p" - "%P" %q %r %s "%T" "%u" "%U" "%v" "%V" %X" main
如圖:
至于所添加的參數(shù)的含義,大家可參閱 Apache 官方文檔。
到此 Apache 配置完成,還有一些關(guān)于 Apache 的權(quán)限配置等,這里就先不做特殊說明,后期再做更新。
啟動 httpd 服務(wù):
service httpd start
六、添加或者上傳站點文件
1、在 WebA 中的網(wǎng)站根目錄下添加 index.php 文件,內(nèi)容如下:
This is a PHP page
Real ServerA
This is a PHP page !
$link = new mysqli("192.168.20.150
總結(jié)
以上是生活随笔為你收集整理的nginx动静分离配置_Nginx 动静分离与负载均衡的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 像个字段相减绝对值_遇见你丨像个英雄一样
- 下一篇: etcd nginx 容器_Etcd+C