nginx的location、root、alias、proxy_pass指令用法和区别

本文详细解析了Nginx中的location、root、alias及proxy_pass指令的用法和区别,通过实例展示了这些指令如何影响请求的处理流程,适用于前后端分离和负载均衡场景。

nginx的location、root、alias、proxy_pass指令用法和区别

[root]
语法:root path
默认值:root html
配置段:http、server、location、if
[alias]
语法:alias path
配置段:location

root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径
alias是一个目录别名的定义,root则是最上层目录的定义。
还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~

root实例:

location ^~ /t/ {
     root /www/root/html/;
}

如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的**/www/root/html/t/a.html**的文件。

alias实例:

location ^~ /t/ {
 alias /www/root/html/new_t/;
}

如果一个请求的URI是**/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html**的文件。注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。

注意:

  1. 使用alias时,目录名后面一定要加"/"。
  2. alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
  3. alias只能位于location块中。(root可以不放在location中)

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/img1.jpg(未附加/test/路径,但附加了/test/之后的路径)。

#load_module /usr/share/nginx/modules/ngx_stream_module.so; #user appyw; worker_processes 1; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; proxy_hide_header X-Powered-By; 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/host.access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; client_max_body_size 10m; #gzip_static on; server { server_tokens off; autoindex off; allow 127.0.0.1; allow 172.23.16.0/24; allow 172.23.68.219; allow 172.23.228.56; allow 218.76.15.23; allow ::1; deny all; listen 18081; listen 443 ssl; server_name localhost; if ($request_method !~ ^(GET|HEAD|POST)$) { return 444; } ssl_certificate ../jason.crt; ssl_certificate_key ../jason-np.key; ssl_session_timeout 5m; ssl_prefer_server_ciphers on; #charset koi8-r; #access_log logs/host.access.log main; location / { root /home/appyw/app/car; index index.html index.htm; try_files $uri $uri/ /index.html; } #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 html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location /dev-api/ { proxy_pass http://172.23.228.56:18081/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /netty/ { proxy_pass http://127.0.0.1:18099/; } location /document/ { proxy_pass http://hn-cwhdfwpt-test.oss-cn-changsha-wwy-d01-a.opswan.sgmc.sgcc.com.cn/; #proxy_set_header Host $host; #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /v2g-platform-web { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; alias /home/appyw/app/ls/v2g-platform-web; index index.html; try_files $uri $uri/ /v2g-platform-web/index.html; } location /v2g-charging-web { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; alias /home/appyw/app/ls/v2g-charging-web; index index.html; try_files $uri $uri/ /v2g-charging-web/index.html; } location /v2g-tjtf-web { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; alias /home/appyw/app/ls/v2g-tjtf-web; index index.html; try_files $uri $uri/ /v2g-tjtf-web/index.html; } location /vehicle-grid-h5 { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; alias /home/appyw/app/ls/vehicle-grid-h5; index index.html; try_files $uri $uri/ /vehicle-grid-h5/index.html; } location /market/api/ { proxy_pass http://172.23.228.56:18081/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /vehicle-grid-admin/ { proxy_pass http://172.23.228.56:18081/vehicle-grid-admin/vehicle-grid-admin/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /vehicle-grid-mobile/ { proxy_pass http://172.23.228.56:18081/vehicle-grid-mobile/vehicle-grid-mobile/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /vehicle-charge-server/ { proxy_pass http://172.23.228.56:18081/charge-server/charge-server/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /vehicle-charging-admin/ { proxy_pass http://172.23.228.56:18081/vehicle-charging-admin/charging-admin/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /vehicle-grid-system/ { proxy_pass http://172.23.228.56:34509/vehicle-grid-system/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /twoBatterySwapping/ { proxy_pass http://172.23.228.56:18081/twoBatterySwapping/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /travel/ { proxy_pass http://172.23.228.56:18081/travel/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /vehicle-grid-client-interconnect/ { proxy_pass http://172.23.228.56:34510/charging-client-interconnect/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /iot/ { proxy_pass http://172.23.228.56:34530; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /newiot/ { proxy_pass http://172.23.228.56:34530; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /xxl-job-admin/ { proxy_pass http://172.23.228.56:18892/xxl-job-admin/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #upstream dataide{ # server 172.23.228.33:34540; # check interval=5000 rise=2 fall=3 timeout=3000 type=http; # check_http_send "HEAD /dataide-server HTTP/1.0\r\n\r\n"; # check_http_expect_alive http_2xx http_3xx; # } location /dataide-server/ { #root html; index index.html index.htm; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://172.23.228.33:34540; } location ^~/dataide { alias /home/appyw/app/ls/ide; index index.html; try_files $uri $uri/ /dataide/index.html; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} } 比如我的这个配置文件,我想把iot,newiot,xxl-job都导到另一个18085端口上,该怎么做
07-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值