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