nginx正向和反向代理配置詳解


nginx代理有三種模式

正向代理      反向代理   透明代理

透明代理不怎么常用。

這里主要討論的是正向代理和反向代理

首先要熟悉nginx的常用配置,大致了解它們的功能與用途以及配置參數

 

 

配置語法

 

語法:proxy_buffering on | off;
默認值:proxy_buffering on;
可配置段:http, server, location
作用:配置proxy緩沖區。
擴展:
  • proxy_buffer_size:設置緩沖區大小(內存頁大小)
  • proxy_buffers:設置緩沖區數量和大小(內存頁數量和大小)
  • proxy_busy_buffers_size:設置最大緩沖區大小
 
語法:proxy_redirect default; proxy_redirect off; proxy_redirect redirect replacement;
默認值:proxy_redirect default;
可配置段:http, server, location
作用:配置proxy重定向。
擴展:
 
語法:proxy_buffering on | off;
默認值:proxy_buffering on;
可配置段:http, server, location
作用:配置proxy緩沖區。
擴展:
 
語法:proxy_set_header field value;
默認值:proxy_set_header Host $proxy_host; proxy_set_header Connection close;
可配置段:http, server, location
作用:配置proxy頭信息。
擴展:
  • proxy_hide_header:設置隱藏頭信息字段;
  • proxy_set_body:設置請求體返回信息。
 
語法:proxy_connect_timeout time;
默認值:proxy_connect_timeout 60s;
可配置段:http, server, location
作用:配置proxy超時。
擴展:
  • proxy_hide_header:設置隱藏頭信息字段;
  • proxy_set_body:設置請求體返回信息。

 

 

正向代理配置

 

vi /etc/nginx/conf.d/reverse.conf
   server{
       resolver 8.8.8.8;				#配置DNS解析IP地址
       resolver_timeout 30s;				#超時時間(5秒)
       listen 8080;
       access_log  /var/log/nginx/reverse.access.log  main;
       error_log   /var/log/nginx/reverse.error.log  warn;
       location / {
           proxy_pass http://$http_host$request_uri;	#配置正向代理參數
           proxy_set_header Host $http_host;		#解決如果URL中帶"."后Nginx 503錯誤
           proxy_buffers 256 4k; 			#配置緩存大小
           proxy_max_temp_file_size 0;			#關閉磁盤緩存讀寫減少I/O
           proxy_connect_timeout 30;			#代理連接超時時間
           proxy_cache_valid 200 302 10m;
           proxy_cache_valid 301 1h;
           proxy_cache_valid any 1m;			#配置代理服務器緩存時間
       }
   }

 

nginx -t -c /etc/nginx/nginx.conf	#檢查配置文件

nginx -s reload

配置釋義:
不能有hostname。
必須有resolver, 即dns,超時時間(30秒)可選。
配置正向代理參數,均是由 Nginx 變量組成。
提示:配置好后,重啟nginx,以瀏覽器為例,若需要使用這個代理服務器,則只需將瀏覽器代理設置為http://+服務器ip地址+:+80即可使用了。
 
 
 
 
 
 
 
反向代理配置
 
server {
     listen   80 ;
     server_name  forward.linuxds.com;
     access_log   / var / log / nginx / forward.access.log  main;
     error_log    / var / log / nginx / forward.error.log  warn;
     location  /  {
         proxy_pass https: / / www.landiannews.com / ;
         proxy_redirect     off;
#        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服務器傳
     }  
}

 

 

nginx -t -c /etc/nginx/nginx.conf	#檢查配置文件
nginx -s reload



配置釋義:
proxy_set_header X-Real-IP $remote_addr:把源IP【$remote_addr,建立HTTP連接header里面的信息】賦值給X-Real-IP,從而通過$X-Real-IP來獲取源IP;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for:在nginx作為代理服務器時,設置的IP列表,會把經過的機器ip,代理機器ip都記錄下來,用【,】隔開
 
 
 
 
 
 
 
 
其他代理配置說明
 

 其他代理配置語句

proxy_pass:設置代理服務器的地址,可以是主機名稱、IP地址加端口號等形式。
proxy_pass URL
提示:
1:當代理的是一組服務器時可以使用 upstream 指令來設置。
2:當URL中含有uri時,(例如 "http://127.0.0.1:8080/"、"http://127.0.0.1:8080/demo.html")不管客戶端訪問的是地址中的uri是什么,代理服務器都會代理到URL的地址;當URL中不包含uri時(例如:"http://127.0.0.1:8080"),那么當客戶端訪問服務器時,代理服務器會根據客戶端請求的uri來訪問具體的URL地址。
 
proxy_pass_request_body on|off:用於配置是否將客戶端請求的請求體發送給代理服務器。
proxy_pass_request_headers on|off:用於配置是否將客戶端請求的頭信息發送給代理服務器。
proxy_set_header field value:可以更改nginx接收到的客戶端請求的請求頭信息,然后將新的請求頭信息發送給被代理的服務器。
proxy_set_body value:ngin接收到客戶端的請求后使用該指令可以修改request中的body體,然后將請求轉發給代理服務器。
proxy_connect_timeout time:nginx服務器與被代理服務器之間嘗試建立連接的的超時時間,默認為60s。
proxy_read_timeot time:nginx服務器接收被代理服務器數據時最大的等待時間,默認為60s。
proxy_send_timeout time:nginx服務器發送數據至被代理服務器的最大等待時間,例如60s內沒有發出一個字節則默認斷開連接,默認60s。
proxy_http_version 1.0|1.1:nginx服務器提供代理服務的http協議版本。
proxy_method method:nginx服務器設置請求被代理服務器時使用的請求方法,一般為POST或者GET。
proxy_ignore_client_abort:當客戶端中斷網絡請求時,nginx服務是否中斷對代理服務器的請求,默認off。

 

參考 https://www.cnblogs.com/itzgr/p/13327861.html  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM