1. 程式人生 > >nginx代理http實現動靜分離。

nginx代理http實現動靜分離。

為了加快網站的解析速度,可以把動態頁面和靜態頁面由不同的伺服器來解析,加快解析速度。降低原來單個伺服器的壓力。
在動靜分離的tomcat的時候比較明顯,因為tomcat解析靜態很慢,其實這些原理的話都很好理解,
簡單來說,就是使用正則表示式匹配過濾,然後交個不同的伺服器。

準備一個nginx代理 兩個http 分別處理動態和靜態。也可以讓nginx代理自己解析靜態網頁,不過nginx又代理又解析網站感覺壓力也挺大的。

這裡nginx的安裝就不在寫了,其中重要的配置如下。

  location / {
            root   /var/www/html/upload;
            index  index.php index.htm;
        }
  location ~ .*\.(html|gif|jpg|png|bmp|swf|jpeg)$ {

                proxy_pass http://192.168.43.22:80;
        }
        location ~ \.php$ {
            proxy_pass   http://192.168.43.62:80;
        }

location /  的作用

定義了請求代理的時候nginx去/var/www/html/upload  下尋找index.php 當他找到index.php的時候匹配了下面的正則  location ~ \.php$

location ~ \.php$   的作用

以php結尾的都以代理的方式轉發給http(192.168.43.62),http1 去處理,這裡http1要去看自己的配置檔案 在自己的配置檔案中定義網站根目錄 /var/www/html/upload  找.index.php  然後處理解析返回給nginx 。

 location ~ .*\.(html|gif|jpg|png|bmp|swf|jpeg)$  的作用

以html等等的靜態頁面都交給http2(192.168.43.22)來處理 ,http2 去找自己的網站目錄 然後返回給nginx 。

兩個http放的肯定是一樣的目錄,只不過每個伺服器的任務不一樣。

代理本身要有網站的目錄,因為最上面的 location / 先生效   如果沒有目錄 會直接提示找不到目錄 不會再往下匹配。

3個伺服器放網站的目錄一樣 網站檔案一樣,  http的配置檔案 根目錄要指定對。

--------------------------------------------------

http1的配置檔案 (處理php的機器)



 

----------------------------------------------

http2 (處理html的網站)

配置一樣 只不過多寫了個html的網頁測試


-----------------------------------------------------

訪問代理伺服器

可以在http1上看訪問日誌是http1處理的網站

訪問html的網頁


在http2上看訪問日誌 可以看到是http2處理的


好了, 到此結束 ,希望對你有所幫助。