Nginx location 和 proxy_pass 配置详解

打印 上一主题 下一主题

主题 837|帖子 837|积分 2511

概述

Nginx 配置中 location 和 proxy_pass 指令的差别组合方式及其对请求转发路径的影响。
配置效果

1. location 和 proxy_pass 都带斜杠 /

  1. location /api/ {
  2.     proxy_pass http://127.0.0.1:8080/;
  3. }
复制代码


  • 访问地址:www.hw.com/api/upload
  • 转发地址:http://127.0.0.1:8080/upload
   转发地址不带 location 匹配目录 /api/
  2. location 不带斜杠,proxy_pass 带斜杠 /

  1. location /api {
  2.     proxy_pass http://127.0.0.1:8080/;
  3. }
复制代码


  • 访问地址:www.hw.com/api/upload
  • 转发地址:http://127.0.0.1:8080//upload
   转发地址会多带 /
  3. location 带斜杠,proxy_pass 不带斜杠

  1. location /api/ {
  2.     proxy_pass http://127.0.0.1:8080;
  3. }
复制代码


  • 访问地址:www.hw.com/api/upload
  • 转发地址:http://127.0.0.1:8080/api/upload
   转发地址会带 location 匹配目录 /api/
  4. location 和 proxy_pass 都不带斜杠

  1. location /api {
  2.     proxy_pass http://127.0.0.1:8080;
  3. }
复制代码


  • 访问地址:www.hw.com/api/upload
  • 转发地址:http://127.0.0.1:8080/api/upload
   转发地址会带 location 匹配目录 /api/
  5. location 和 proxy_pass 都带斜杠 /,但 proxy_pass 带地址

  1. location /api/ {
  2.     proxy_pass http://127.0.0.1:8080/server/;
  3. }
复制代码


  • 访问地址:www.hw.com/api/upload
  • 转发地址:http://127.0.0.1:8080/server/upload
   转发地址不带 location 匹配目录 /api/
  6. location 不带斜杠,proxy_pass 带斜杠 /,但 proxy_pass 带地址

  1. location /api {
  2.     proxy_pass http://127.0.0.1:8080/server/;
  3. }
复制代码


  • 访问地址:www.hw.com/api/upload
  • 转发地址:http://127.0.0.1:8080/server//upload
   转发地址不带 location 匹配目录 /api/ ,会多带 /
  7. location 带斜杠,proxy_pass 不带斜杠,但 proxy_pass 带地址

  1. location /api/ {
  2.     proxy_pass http://127.0.0.1:8080/server;
  3. }
复制代码


  • 访问地址:www.hw.com/api/upload
  • 转发地址:http://127.0.0.1:8080/serverupload
   转发地址不带 location 匹配目录 /api/ 直接进行了更换
  8. location 和 proxy_pass 都不带斜杠,但 proxy_pass 带地址

  1. location /api {
  2.     proxy_pass http://127.0.0.1:8080/server;
  3. }
复制代码


  • 访问地址:www.hw.com/api/upload
  • 转发地址:http://127.0.0.1:8080/server/upload
   转发地址不带 location 匹配目录 /api
  总结



  • 当 proxy_pass 署理地址端口后有目录(包括 /),转发后地址为:署理地址 + 访问 URL 目录部分去除 location 匹配目录
  • 当 proxy_pass 署理地址端口后无任何内容,转发后地址为:署理地址 + 访问 URL 目录部分(包括 location 地址)
场景示例

  1. upstream backend_name_hw {
  2.   server 10.10.10.10:32323 max_fails=2 fail_timeout=2;
  3. }
  4. server {
  5.     listen      80;
  6.     server_name hw.test.com;
  7.     client_max_body_size 1024m;
  8.     client_body_timeout 12;
  9.     client_header_timeout 12;
  10.     keepalive_timeout 15;
  11.     send_timeout 10;
  12.     location / {
  13.       proxy_pass http://backend_name_hw;
  14.       proxy_set_header Host $host;
  15.       proxy_set_header X-Real-IP $remote_addr;
  16.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  17.     }
  18.    
  19.     location /hello {
  20.       proxy_pass http://backend_name_hw/hello;
  21.       proxy_set_header Host $host;
  22.       proxy_set_header X-Real-IP $remote_addr;
  23.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  24.     }
  25. }
复制代码


  1.     location /hw/ {
  2.         proxy_pass http://hw-nginx/index.html;
  3.         proxy_set_header Host $host;
  4.         proxy_set_header X-Real-IP $remote_addr;
  5.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  6.     }
复制代码

  1.     location /hwhw/  {
  2.         proxy_pass http://hw-nginx/;
  3.         proxy_set_header Host $host;
  4.         proxy_set_header X-Real-IP $remote_addr;
  5.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  6.     }
复制代码

  1.     location /hw/hi/ {
  2.         proxy_pass http://hw-nginx/hello/index.html;
  3.         proxy_set_header Host $host;
  4.         proxy_set_header X-Real-IP $remote_addr;
  5.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  6.     }
复制代码

  1.     location /hello/index.html {
  2.         proxy_pass http://hw-nginx;
  3.         proxy_set_header Host $host;
  4.         proxy_set_header X-Real-IP $remote_addr;
  5.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  6.     }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表