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

 更新时间:2024年12月17日 14:22:37   作者:忍冬行者  
Nginx使用proxy_pass进行二级目录转发时,配置中的斜杠(/)影响路径的处理方式:带斜杠表示绝对路径,不带斜杠表示相对路径,具体转发到后端服务的URL会有所不同

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Nginx与Tomcat之间的关系及说明

    Nginx与Tomcat之间的关系及说明

    Nginx和Tomcat在现代Web应用架构中扮演重要角色,Nginx主要负责处理HTTP请求、反向代理、负载均衡、SSL加密和静态资源服务,而Tomcat则专注于处理动态请求和运行JavaWeb应用,它们通过反向代理和负载均衡机制紧密合作,优化系统性能和扩展性,适用于高并发和大流量场景
    2025-02-02
  • Nginx工作模式及代理配置的使用细节

    Nginx工作模式及代理配置的使用细节

    这篇文章主要为大家介绍了Nginx工作模式及代理配置的使用细节,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • Nginx虚拟主机的配置步骤过程全解

    Nginx虚拟主机的配置步骤过程全解

    这篇文章主要为大家介绍了Nginx虚拟主机的配置步骤过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-03-03
  • nginx cache不缓存问题的原因与解决方案

    nginx cache不缓存问题的原因与解决方案

    最近在工作中遇到了一个问题,发现nginx cache居然不缓存,后来通过查找网上的资料找到了原因和解决方案,下面整理好分享给大家,同样遇到这个问题的朋友们可以参考借鉴,下面和小编一起来学习学习吧。
    2016-10-10
  • nginx出现500 Internal Server Error错误的解决方法

    nginx出现500 Internal Server Error错误的解决方法

    这篇文章主要介绍了nginx出现500 Internal Server Error错误的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或工作有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • PHP(FastCGI)在Nginx的alias下出现404错误的解决方法

    PHP(FastCGI)在Nginx的alias下出现404错误的解决方法

    这篇文章主要介绍了PHP(FastCGI)在Nginx的alias下出现404错误的解决方法,涉及nginx平台的相关配置技巧,需要的朋友可以参考下
    2016-05-05
  • 一文详解Nginx的强缓存和协商缓存

    一文详解Nginx的强缓存和协商缓存

    这篇文章主要为大家详细介绍了Nginx中强缓存和协商缓存的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-03-03
  • Nginx 负载均衡算法及故障转移解析

    Nginx 负载均衡算法及故障转移解析

    这篇文章主要介绍了Nginx 负载均衡算法及故障转移解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Nginx文件下载站点搭建的实现步骤

    Nginx文件下载站点搭建的实现步骤

    本文主要介绍了Nginx文件下载站点搭建的实现步骤,包含配置Nginx和Fancyindex来搭建文件下载站点,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Nginx流量控制及白名单实现

    Nginx流量控制及白名单实现

    本文主要介绍了Nginx流量控制实现,还包括了针对客户端IP地址的白名单和黑名单应用不同“流量限制”的高级配置,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08

最新评论