1. 什么是反向代理:
反向代理服務(wù)器架設(shè)在服務(wù)器端,通過緩沖經(jīng)常被請求的頁面來緩解服務(wù)器的工作量,將客戶機(jī)請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的目標(biāo)服務(wù)器;并將從服務(wù)器上得到的結(jié)果返回給Internet上請求連接的客戶端,此時(shí)代理服務(wù)器與目標(biāo)主機(jī)一起對外表現(xiàn)為一個(gè)服務(wù)器。
2. 反向代理的主要作用:
目前web網(wǎng)站使用反向代理,除了可以防止外網(wǎng)對內(nèi)網(wǎng)服務(wù)器的惡性攻擊、緩存以減少服務(wù)器的壓力和訪問安全控制之外,還可以進(jìn)行負(fù)載均衡,將用戶請求分配給多個(gè)服務(wù)器。
3. Nginx配置反向代理:
Nginx作為近年來較火的反向代理服務(wù)器,安裝在目的主機(jī)端,主要用于轉(zhuǎn)發(fā)客戶機(jī)請求,后臺(tái)有多個(gè)http服務(wù)器提供服務(wù),nginx的功能就是把請求轉(zhuǎn)發(fā)給后面的服務(wù)器,決定哪臺(tái)目標(biāo)主機(jī)來處理當(dāng)前請求。
3.1 配置目標(biāo):
內(nèi)網(wǎng)搭建了兩個(gè)web服務(wù)器,分別為 10.0.5.87 和 10.0.5.123,現(xiàn)在需要用Nginx搭建反向代理服務(wù)器,使得:
- 可以通過代理服務(wù)器訪問這兩個(gè)web服務(wù)器;
- 可以修改請求包中header的字段;
3.2 實(shí)施方法:
- nginx配置文件修改:
server {
#偵聽www.local_host.ik的80端口
listen 80;
server_name www.local_host.ik;
#對aspx后綴的進(jìn)行負(fù)載均衡請求
location / {
# root /root;#定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置
index index.php index.html index.htm;#定義首頁索引文件的名稱
proxy_pass http://10.0.5.87:8080/;#請求轉(zhuǎn)向定義的服務(wù)器
#以下是一些反向代理的配置可刪除.
proxy_redirect off;
#后端的Web服務(wù)器可以通過X-Forwarded-For獲取用戶真實(shí)IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允許客戶端請求的最大單文件字節(jié)數(shù)
client_body_buffer_size 128k; #緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù),
proxy_connect_timeout 90; #nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))
proxy_send_timeout 90; #后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代理發(fā)送超時(shí))
proxy_read_timeout 90; #連接成功后,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí))
proxy_buffer_size 4k; #設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小
proxy_buffers 4 32k; #proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的話,這樣設(shè)置
proxy_busy_buffers_size 64k; #高負(fù)荷下緩沖大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #設(shè)定緩存文件夾大小,大于這個(gè)值,將從upstream服務(wù)器傳
#啟用cache并指定大小
proxy_cache first;
proxy_cache_valid 200 10m;
}
add_header X-Via $server_addr;
add_header X_cache_hit $upstream_cache_status;
}
#第二個(gè)虛擬服務(wù)器
server {
#偵聽www.fengyanjiao.ik的80端口
listen 80;
server_name www.fengyanjiao.ik;
#對aspx后綴的進(jìn)行負(fù)載均衡請求
location / {
# root /root;#定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置
index index.php index.html index.htm;#定義首頁索引文件的名稱
proxy_pass http://10.0.5.123:5004/;#請求轉(zhuǎn)向定義的服務(wù)器
#以下是一些反向代理的配置可刪除.
proxy_redirect off;
#后端的Web服務(wù)器可以通過X-Forwarded-For獲取用戶真實(shí)IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允許客戶端請求的最大單文件字節(jié)數(shù)
client_body_buffer_size 128k; #緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù),
proxy_connect_timeout 90; #nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))
proxy_send_timeout 90; #后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代理發(fā)送超時(shí))
proxy_read_timeout 90; #連接成功后,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí))
proxy_buffer_size 4k; #設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小
proxy_buffers 4 32k; #proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的話,這樣設(shè)置
proxy_busy_buffers_size 64k; #高負(fù)荷下緩沖大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #設(shè)定緩存文件夾大小,大于這個(gè)值,將從upstream服務(wù)器傳
}
}