nginx裏proxy_pass有無/的區別

nginx在反向代理的時候,proxy_pass須要指定路徑, 有無"/" 的區別,以下:
 
 location /lile {
     配置一: proxy_pass  http://192.168.0.37/;
     配置二: proxy_pass  http://192.168.0.37;
    } 

 

環境說明:html

反向代理服務器:192.168.0.224
真實數據機器:192.168.0.37nginx

 
1:先配置真實數據機的nginx配置文件
 
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include      mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen      80;
        server_name  localhost;
        
        root     /web1

        location /lile {
            root  /data;
            index index.html;
        }       
        }
}

 

建立對應的文件夾:
 
mkdir /web1
echo "My location is /web1" > index.html
mkdir -p /data/lile
echo "My location is /data/lile" > index.html

 

2:反向代理的配置文件爲
 
worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include      mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen      80;
        server_name  localhost;
        location /lile {
              配置一:proxy_pass  http://192.168.0.37;
              配置二:proxy_pass  http://192.168.0.37/
        }
}
}
 
 
3:測試
 
當proxy_pass爲: http://192.168.0.37    的時候,返回的數據以下:
1)瀏覽器請求訪問http://192.168.0.224/lile/ 
2)到達192.168.0.224後,location /lile 匹配到以後,轉發的地址爲: http://192.168.0.37/lile/
3)而後到達192.168.0.37,匹配到了location /lile,因此就去/data目錄下取數據
 
 
 
當proxy_pass爲: http://192.168.0.37/  的時候,返回的數據以下:
1)瀏覽器請求訪問http://192.168.0.224/lile/ 
2)達192.168.0.224後,location /lile 匹配到以後,轉發的地址爲:http://192.168.0.37/,這裏在proxy_pass的 http://192.168.0.37/ 「/」會把/lile給替換掉
3)而後到達192.168.0.37,直接匹配到的是root /web1,因此就去/web1目錄下取數據
 
 
4:其餘
 
在上面的location若爲/,沒有其餘的具體匹配值,那麼這兩個的訪問無區別      
location / {
    配置一: proxy_pass  http://192.168.0.37/;
    配置二: proxy_pass  http://192.168.0.37;
}
  
 
配置一轉發的時候,新的URI替換原有的獲得的仍是 http://192.168.0.37/
配置二轉發的時候,不會發生改變 http://192.168.0.37/
 
 
5:總結
 
proxy_pass URL(http://192.168.0.224/uri/)
當URL中含有URI時,Nginx服務器會使用新的URI替換原有的URI(這裏的新的URI理解爲proxy_pass URL裏的URI)
當URL中不含URI時,Nginx服務器不會改變原有地址的URI
這裏的URI與URL暫且不去討論它是怎麼定義的,就理解爲域名或者IP地址以後的路徑(暫時還沒弄清楚他們兩個的區別)
 
 
注:學習《nginx高性能Web服務器詳解》的時候總結
相關文章
相關標籤/搜索