酷播亮新聞
最棒的知識補給站

7、Nginx+Apache環境配置–動靜分離

文章摘要: 在Web伺服器中,動態請求是指該請求需要伺服器端的程式處理,而靜態請求不需要程式處理,直接讀取檔案並返回即可,例如html,css,js,images等檔案。

在Web伺服器中,動態請求是指該請求需要伺服器端的程式處理,而靜態請求不需要程式處理,直接讀取檔案並返回即可,例如html,css,js,images等檔案,針對這兩種請求各自的特點,可以由Nginx提供對外訪問,靜態請求直接由Nginx處理,動態請求轉交給Apache處理,這樣就實現了動靜分離。

1、更改Apache監聽埠

當Nginx作為前端Web伺服器後就會佔用80埠,爲了讓Apache正常執行,需要改變Apache監聽埠,下面將埠修改爲81埠:

httpd.conf配置檔案:

httpd-vhosts.conf配置檔案:

2、更改Nginx對動態請求的處理

proxy_pass:用於代理客戶端瀏覽器請求Apache伺服器;

proxy_set_header:用於傳送Host訊息頭;

Nginx在代理請求時能夠自動傳遞來自客戶端瀏覽器的請求訊息頭,但是無法傳遞Host訊息頭,因此需要設定proxy_set_header指令;

Nginx的$host變數儲存了當前請求的主機名,即虛擬主機:www.test.org,放在Host訊息頭中用於告知Apache當前請求的虛擬主機。

3、傳遞客戶端IP地址

在Web伺服器中,REMOTE_ADDR表示客戶端的IP地址,若要獲取真實的客戶端IP地址,需要Nginx將客戶端IP使用者另一種方式傳遞給Apache,這裏藉助HTTP請求訊息頭,我們可定義一個專門用於傳遞客戶端IP的訊息頭X-Client-IP,當Nginx獲取到客戶端IP後,將IP放入訊息頭髮送給Apache,然後在Apache中替換REMOTE_ADDR即可。

在原有虛擬主機上配置的基礎上增加X-Client-IP訊息頭:

Nginx提供的$rremote_addr變數儲存了客戶端IP地址,然後將其新增到X-Client-IP中,如果Nginx收到的請求中已經存在X-Client-IP訊息頭,則會被替換,從而防止偽造客戶端IP的情況發生。

Apache模組mod_remoteip用於檢測REMOTE_ADDR是否為代理伺服器的IP,如果是則從自定義的HTTP訊息頭中讀取IP,在httpd.conf中啟動mod_remoteip.so模組,並指定訊息頭的名稱和代理伺服器的IP地址。

上述配置後,當Apache的mod_remoteip模組檢測到REMOTE_ADDR為127.0.0.1時,就會用X-Client-IP的值替換,然後清除X-Client-IP訊息頭。

上篇:6、Nginx+Apache環境配置–Apache安裝配置

如有侵權請來信告知:酷播亮新聞 » 7、Nginx+Apache環境配置–動靜分離