什麼是代理服務html
HTTP請求沒有代理服務的模型圖nginx
HTTP請求具備代理服務的模型圖後端
代理分類瀏覽器
正向代理緩存
正向代理模型圖服務器
反向代理app
反向代理模型圖jsp
反向代理模型圖解釋:分佈式
代理區別ide
Nginx可支持的代理協議
常見的Nginx做爲反向代理支持的協議
反向代理模式與Nginx代理模塊
常見的Nginx做爲正向代理支持的協議
注意:
代理服務proxy_pass配置語法
URL
;location
, if in location
, limit_except
反向代理配置場景模擬
假設有兩個服務一個對外暴露,一個不對外暴露只能內部訪問,對外暴露的端口是80,在內部訪問的端口是8080,經過訪問對外暴露的80服務來訪問8080服務
(1)建立兩個HTML靜態資源文件
http_proxy.html文件
<h1>Welcome to http_proxy!!!!</h1>
http_proxy_redirect.html
<h1>Welcome to http_proxy_redirect_81!!!!</h1>
(2) 編輯location
配置對外暴露的代理
server { listen 80; server_name www.zhangbiao.com; location ~ /test_proxy.html$ { proxy_pass http://127.0.0.1:8080; }
內部才能訪問的服務
server { listen 8080; server_name 127.0.0.1; location / { root /opt/app/code2; index http_proxy_redirect.htm; }
proxy-緩衝區
擴展:
proxy_buffer_size-設置緩衝區大小(內存頁大小)
proxy_buffers-設置緩衝區數量和大小(內存頁數量和大小)
proxy_busy_buffers_size-設置最大緩衝區大小
proxy-重定向
proxy-頭信息
擴展:
proxy_hide_header-設置隱藏頭信息字段
proxy_set_body-設置請求體返回信息
proxy-超時
擴展:
proxy_read_timeout-從代理服務器讀取響應的超時時間
proxy_send_timeout-設置將請求傳輸到代理服務器的超時時間
代理通用配置
location / { proxy_pass http://127.0.0.1:8080; include proxy_params; }
proxy_params
proxy_redirect default; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 32k; proxy_buffering on; proxy_buffers 4 128k; proxy_busy_buffers_size 256k; proxy_max_temp_file_size 256k;
代理配置詳解:
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 30;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
location / { index index.jsp; proxy_pass http://hello; #在這裏設置一個代理,和upstream的名字同樣 #如下是一些反向代理的配置可刪除 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服務器傳 } }