nginx location alias、root、proxy_pass

本文详细解析了Nginx中的alias、root与proxy_pass配置的区别与应用,包括它们如何影响文件系统访问及反向代理行为,特别关注于路径匹配与转发的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、【alias】——别名配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【alias】配置的路径。如:


location /test/ 
{ 
    alias/first/second/img/; 
}

即:请求/test/1.jpg(省略了协议与域名),将会返回文件/first/second/img/1.jpg

 

2、【root】——根路径配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【root】配置的路径,并把location配置路径附加到其后。如:

location /test/ 
{ 
    root /first/second/img/; 
}

即:请求/test/1.jpg(省略了协议与域名),将会返回文件/first/second/img/test/1.jpg,相较于alias,使用root会把/test/附加到根目录之后。

在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。 

     
     首先是location进行的是模糊匹配
    1)没有“/”时,location /abc/def可以匹配/abc/defghi请求,也可以匹配/abc/def/ghi等
    2)而有“/”时,location /abc/def/不能匹配/abc/defghi请求,只能匹配/abc/def/anything这样的请求

3、【proxy_pass】——反向代理配置,用于代理请求,适用于前后端负载分离或多台机器、服务器负载分离的场景,在匹配到location配置的URL路径后,转发请求到【proxy_pass】配置的URL,是否会附加location配置路径与【proxy_pass】配置的路径后是否有"/"有关,有"/"则不附加


location /test/ 
{ 
    proxy_pass http://127.0.0.1:8080/; 
}

即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/1.jpg(未附加/test/路径)


location /test/ 
{ 
    proxy_pass http://127.0.0.1:8080; 
}

即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/test/1.jpg(附加/test/路径)

location/test/ 
{ 
    proxy_pass http://127.0.0.1:8080/img; 
}

即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/img/1.jpg(未附加/test/路径,但附加了/test/之后的路径)。

location/test/ 
{ 
    proxy_pass http://127.0.0.1:8080/img/; 
}

即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/img/1.jpg(未附加/test/路径,但附加了/test/之后的路径)。

root@pgm02:/mnt/sdc/pg-dmo/nginx/etc/conf.d# cat tunnelIntelligentDesign.conf map $http_upgrade $connection_upgrade { default keep-alive; 'websocket' upgrade; } server { listen 80; listen [::]:80; server_name tdi.devops.pgsensing.com; #access_log /var/log/nginx/host.access.log main; location /mapHr/ { proxy_pass http://192.168.20.163:180/mapHr/; # proxy_pass http://192.168.20.163:180/; } location /tunnelIntelligentDesign { alias /usr/share/nginx/html/dev.tunnel-intelligent-design; try_files $uri $uri/ /tunnelIntelligentDesign/index.html; index index.html index.htm; } location / { rewrite ^/ http://$http_host/tunnelIntelligentDesign permanent; } location /tunnel/ws { proxy_pass http://pgdmo-tunnel-dev.dev-test:8088/tunnel/ws; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } location /upload/ { proxy_pass http://minio.devops:9000/pgdmo-dev/; } location /pub/warning_pic_lidar/ { proxy_pass http://minio.devops:9000/pub/warning_pic_lidar/; } location /pub { proxy_pass http://minio-mvd.devops:9000; } location /fileStorage/ { proxy_pass http://minio.devops:9000/; } location /prod-api/ { proxy_pass http://pgdmo-api-tdi.dev-test:8080/; } location /oam-api/ { proxy_pass http://pgdmo-oam-dev.dev-test:8080/; } location /sms-api/ { proxy_pass http://pgdmo-sms-dev.dev-test:8080/; } location /door-control-api/ { #proxy_pass http://192.168.30.222:8080/; #proxy_pass http://rb8aj5.natappfree.cc/; } location /door-api/ { proxy_pass http://pgdmo-door-dev.dev-test:8081/; } location /ws-door/ { proxy_pass http://pgdmo-door-dev.dev-test:8082/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } location /inspection-api/ { proxy_pass http://pg-inspection-dev.dev-test:60006/; } location /ws-multiview/ { proxy_pass http://pgdmo-multiview-dev.dev-test:8083/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } location /multiview-api/ { proxy_pass http://pgdmo-multiview-dev.dev-test:60007/; } location /tdsa-api/ { proxy_pass http://pgdmo-tdsa-dev.dev-test:60008/; } location /tunnel-api/ { proxy_pass http://pgdmo-tunnel-dev.dev-test:60010/; } location /ai-api/ { proxy_pass http://pgdmo-ai-dev.dev-test:60009/; } location /ai-upload/ { alias /opt/ai-upload-dev/; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } tdi.devops.pgsensing.com 内网的访问地址是什么
04-01
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值