反向代理 VS 正向代理
正向代理,架設在客戶機與目標主機之間,只用于代理內部網絡對Internet的連接請求,客戶機必須指定代理服務器,并將本來要直接發送到Web服務器上的http請求發送到代理服務器中。
反向代理服務器架設在服務器端,通過緩沖經常被請求的頁面來緩解服務器的工作量,將客戶機請求轉發給內部網絡上的目標服務器;并將從服務器上得到的結果返回給Internet上請求連接的客戶端,此時代理服務器與目標主機一起對外表現為一個服務器。
反向代理有哪些主要應用
- 防止外網對內網服務器的惡性攻擊
- 減少服務器的壓力和訪問安全控制
- 負載均衡,將用戶請求分配給多個服務器
反向代理服務器Nginx
主要用于轉發客戶機請求到后端多個http服務器的某一臺,來處理當前請求。
簡單的配置示例
upstream bbs1{
server bbs1.test.com;
}
upstream bbs2{
server bbs2.test.com;
}
server {
listen 80;
server_name localhost;
location /bbs1/ {
proxy_pass http://bbs1/;
}
location /bbs2/ {
proxy_pass http://bbs2/;
}
location / {
index index.html index.htm;
root html;
}
}
常用的配置參數
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 300; #nginx跟后端服務器連接超時時間(代理連接超時)
proxy_send_timeout 300; #后端服務器數據回傳時間(代理發送超時)
proxy_read_timeout 300; #連接成功后,后端服務器響應時間(代理接收超時)
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服務器傳
應用
server {
listen 80;
server_name localhost;
location /bbs1/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_pass http://bbs1/;
}
location /bbs2/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_pass http://bbs2/;
}
location / {
index index.html index.htm;
root html;
}
}