nginx根据二级目录转发服务以及带/和不带/的区别

在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。具体实例如下

1.配置文件location带/且proxy_pass带/

server {

        listen 80;
        server_name test.htjs.net;
        #通过访问service二级目录来访问后台
location /service/ {
            # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点
            proxy_pass      http://192.168.1.51:8080/;
            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;
        }
}

即如果访问test.htjs.net/service/xxx.html 实际访问的是后端服务http://192.168.1.51:8080/xxx.html

2.配置文件location带/且proxy_pass不带/

server {

        listen 80;
        server_name test.htjs.net;
        #通过访问service二级目录来访问后台
location /service/ {
            # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点
            proxy_pass      http://192.168.1.51:8080;
            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;
        }

即访问http://test.htjs.net/service/xxx.html,实际访问的是后端服务 http://192.168.1.51:8080/service/xxx.html

3.配置文件location带/且proxy_pass带二级目录和/

server {

        listen 80;
        server_name test.htjs.net;
        #通过访问service二级目录来访问后台
location /service/ {
            # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点
            proxy_pass      http://192.168.1.51:8080/api/;
            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;
        }
}

即访问访问http://test.htjs.net/service/xxx.html,实际访问的是后端服务 http://192.168.1.51:8080/api/xxx.html

4.配置文件location带/且proxy_pass带二级目录不带/

server {

        listen 80;
        server_name test.htjs.net;
        #通过访问service二级目录来访问后台
location /service/ {
            # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点
            proxy_pass      http://192.168.1.51:8080/api;
            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;
        }
}

即访问访问http://test.htjs.net/service/xxx.html,实际访问的是后端服务 http://192.168.1.51:8080/apixxx.html

5.location不带/且proxy_pass带二级目录不带/

server {

        listen 80;
        server_name test.htjs.net;
        #通过访问service二级目录来访问后台
location /service {
            # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点
            proxy_pass      http://192.168.1.51:8080/api;
            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;
        }
}

即访问访问http://test.htjs.net/service/xxx.html,实际访问的是后端服务 http://192.168.1.51:8080/api/xxx.html

6.location不带/且proxy_pass带/

server {

        listen 80;
        server_name test.htjs.net;
        #通过访问service二级目录来访问后台
location /service {
            # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点
            proxy_pass      http://192.168.1.51:8080/;
            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;
        }
}

即访问访问http://test.htjs.net/service/xxx.html,实际访问的是后端服务 http://192.168.1.51:8080//xxx.html

7.location不带/且proxy_pass不带/

 

server {

        listen 80;
        server_name test.htjs.net;
        #通过访问service二级目录来访问后台
location /service {
            # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点
            proxy_pass      http://192.168.1.51:8080;
            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;
        }
}

即访问访问http://test.htjs.net/service/xxx.html,实际访问的是后端服务 http://192.168.1.51:8080/service/xxx.html

最近更新

  1. TCP协议是安全的吗?

    2024-04-23 01:16:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-23 01:16:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-23 01:16:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-23 01:16:03       18 阅读

热门阅读

  1. Rust 模式匹配中的& 和 ref

    2024-04-23 01:16:03       13 阅读
  2. RedisHttpSession反序列化UID问题跟踪

    2024-04-23 01:16:03       13 阅读
  3. 【Git】git revert 命令(撤销 commit 改动)

    2024-04-23 01:16:03       22 阅读
  4. 深度学习概念

    2024-04-23 01:16:03       12 阅读
  5. AJAX请求(axios篇)

    2024-04-23 01:16:03       14 阅读
  6. UDF小白入门

    2024-04-23 01:16:03       14 阅读
  7. git工具的安装及使用

    2024-04-23 01:16:03       12 阅读
  8. backtracking Leetcode 回溯算法题

    2024-04-23 01:16:03       11 阅读
  9. Linux文本处理三剑客:awk、grep和sed

    2024-04-23 01:16:03       13 阅读