1. 程式人生 > >linux+apache+nginx實現,反向代理動靜分離

linux+apache+nginx實現,反向代理動靜分離

在我們開發的過程中,一定會遇到,負載均衡方面的問題。下面我們,做一個小例子:使用nginx+apache實現反向代理,動靜分離。

這裡apache、php、nginx的安裝就不做贅述了,不懂的朋友可以看看我其他的文章,或者去百度搜索瞭解一下。

現在,我們的電腦上有apache、nginx、php,其中php為apache服務。

我們想要實現的是,當請求傳送到nginx的時候,nginx會去判斷是不是php請求,如果是,那麼將php請求反向分發給apache伺服器。

其實,我們利用nginx要實現上面的功能,很簡單,只需要在nginx.conf配置檔案中,加上下面配置就行。(紅色部分程式碼)

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;
index index.html index.htm;
}
location ~ \.php$ {
proxy_pass http://111.231.226.228:8080;             #我用的是雲伺服器,大家如果是本地虛擬機器的話,就配置自己的ip+apache的監聽埠號


}

#error_page 404 /404.html;

然後重啟nginx:./sbin/nginx -s reload    (我的/sbin目錄是位於nginx安裝目錄下的/usr/local/nginx)

 

接下來就是對apache進行配置了。

首先,配置httpd.conf,以下幾個地方是需要配置的。

其次,配置httpd-vhosts.conf

現在,我們來看效果。

我們先把,我們剛才寫的nginx反向代理配置註釋掉,看訪問nginx下的php請求,會是什麼效果。

我們在nginx的html目錄下,寫了一段簡單的php程式碼

<?php
echo '123';
?>
<img src="./test.jpg" />

現在,我們開啟我們設定的nginx反向代理,看以下效果。

重啟nginx:/usr/local/nginx/sbin/nginx -s reload

我們可以看到請求成功了。

至此,我們的這個nginx+apache實現方向代理,動靜分離的小實驗就成功的結束了。

下面我們可以看一下,nginx和apache的access.logs檔案。

nginx的access log

apache的access log

 

從上面的log檔案中,我們可以清晰的看到,html的image請求,是nginx http伺服器響應的,而我們的php請求是apache http伺服器響應的。

是不是很神奇!!!