配置Nginx前端Apache後端服務器

曾經對host2ez主機,它用的是nginx,但卻能完美兼容apache感到很困惑,一番折騰後知道,原來只要由Nginx作前端處理靜態文件,Apache作後端服務器便可,代價是可憐的內存又少了... php

1、基礎知識

1.一、反向代理過程

Nginx前端,Apache後端過程其實很簡單,首先用戶訪問的是80端口的nginx,而後nginx將靜態內容留給本身,其他的轉發給非80端口的apache,apache處理完畢後再回傳給nginx。 css

1.二、Nginx location 基礎

詳細見《Nginx Location 指令基礎》,在不一樣的 Location 位置添加反向代理,Nginx 前端就充當了徹底不同的角色。 html

2、編輯 Nginx 配置文件


vim /usr/local/nginx/conf/nginx.conf

2.一、添加"proxy_set_header"指令

編輯Nginx配置文件,在"http"字段內添加相應代碼,發送發送真實IP到後端 前端

vim /usr/local/nginx/conf/nginx.conf
# 向後端服務器發起請求時添加指定的header頭信息
proxy_set_header  Host $host;
# 向後端服務器發送真實 IP
proxy_set_header  X-Real-IP $remote_addr;
#讓後端如php能直接經過變量獲取真實IP
proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

2.二、添加"proxy_pass"指令

在相應 」location" 字段添加以下反向代理語句。這部分是難點,也是國內教程都沒有說起的地方。 nginx

方法一:

將全部請求都轉發給後端 apache 處理,但因爲 "~*" 優先級高於 "/" ,因此圖片、JS、CSS例外,"expires" 用於設置緩存時間。 apache

location / {
    proxy_pass  http://127.0.0.1:8080;
}
location ~* \.(jpg|jpeg|gif|png)$ {
    access_log  off;
    expires  30d;
}
location ~* \.(js|css)$ {
    access_log  off;
    expires  1d;
}


方法二:

只將.php後綴的文件,交由後端 apache 處理 vim

location ~ \.php$ {
    proxy_pass  http://127.0.0.1:8080;
}

2.三、添加高級選項(選作)

#請求鏈接後端服務器超時時間。即在規定時間,後端必須響應前端握手請求。
proxy_connect_timeout 30; c#

#後端服務器響應時間。即鏈接成功,在後端排隊等候處理不能超過的時間。
proxy_read_timeout 60; 後端

#後端數據回傳時間。即在規定時間,後端服務器必須將全部數據回傳完畢。
proxy_send_timeout 30; 緩存

#從後端服務器讀取的頭信息的緩衝區大小。
proxy_buffer_size 4k;

#從後端服務器讀取的頭信息的緩衝區數目和大小
proxy_buffers 4 32k;

若是服務器繁忙,可申請的proxy_buffers大小
proxy_busy_buffers_size 64k;

#代理緩存臨時文件大小
proxy_temp_file_write_size 64k;

#代理最大緩存臨時文件大小
proxy_max_temp_file_size 128m;

3、編輯 Apache 配置文件(選作)

注意:mod_rpaf 模塊不是必須安裝,除非你須要開啓 Apache 日誌,但有畫蛇添足之嫌,由於已經有 Nginx 日誌了,再開 Apache 日誌話就出現重複了。

Apache rpaf 模塊做用是獲取Nginx轉發過來的真實IP,不然在Apache日子中來訪IP所有爲127.0.0.1。

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
/usr/local/www/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
vim /usr/local/apache/conf/httpd.conf LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFproxy_ips 127.0.0.1
RPAFsethostname On
RPAFheader X-Forwarded-For
相關文章
相關標籤/搜索