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服务器搭建和基本配置详解

    Nginx服务器搭建和基本配置详解

    这篇文章主要介绍了Nginx服务器搭建和基本配置详解,Nginx是事件驱动的高性能服务器,需要的朋友可以参考下
    2015-09-09
  • NGINX 权限控制文件预览和下载的实现原理

    NGINX 权限控制文件预览和下载的实现原理

    我们知道,使用nginx作为文件下载服务器,可以极大地降低对后端Java服务器的负载冲击,但是nginx本身并不提供授权控制,这下该如何操作呢,下面小编给大家带来了NGINX 权限控制文件预览和下载的实现原理,感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • Nginx代理Vue项目出现Invalid Host header问题及解决

    Nginx代理Vue项目出现Invalid Host header问题及解决

    在使用Nginx的upstream对Vue项目进行负载均衡时,如果代理地址无法访问目标地址且页面报错InvalidHostheader(无效主机头),可能是由于Vue项目的主机检查配置导致的,解决方法是在Vue项目的webpack.dev.js文件中的devServer下添加disableHostCheck:true,跳过主机检查
    2024-12-12
  • Nginx服务器上搭建图片缓存服务的基本配置解析

    Nginx服务器上搭建图片缓存服务的基本配置解析

    这篇文章主要介绍了Nginx服务器上搭建图片缓存服务的基本配置解析,分别介绍了通过proxy_store模块和proxy_cache模块两种方式的配置,需要的朋友可以参考下
    2016-04-04
  • filebeat收集json格式的tomcat日志详解

    filebeat收集json格式的tomcat日志详解

    这篇文章主要为大家介绍了filebeat收集json格式的tomcat日志详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Nginx查看当前连接数的配置方法

    Nginx查看当前连接数的配置方法

    在开发过程中有时候我们需要查看Nginx的当前连接数,方便调整一些参数配置和性能调优,在Nginx中,你可以通过几种方式来查看当前的连接数,感兴趣的朋友一起看看吧
    2024-08-08
  • nginx try_files指令判断文件是否存在实例

    nginx try_files指令判断文件是否存在实例

    这篇文章主要介绍了nginx try_files指令判断文件是否存在实例,本文用一个实际需求讲解try_files指令的使用,并给出配置示例,需要的朋友可以参考下
    2015-02-02
  • nginx请求时找路径问题解决

    nginx请求时找路径问题解决

    当你安装了nginx的时候,为nginx配置了如下的location,想要去访问路径下面的内容,可是总是出现404,找不到文件,这是什么原因呢,今天我们就来解决这个问题,感兴趣的朋友一起看看吧
    2023-10-10
  • Nginx解决前端访问资源跨域问题的方法详解

    Nginx解决前端访问资源跨域问题的方法详解

    这篇文章主要给大家介绍了关于Nginx解决前端访问资源跨域问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Nginx 介绍及日常管理的详解

    Nginx 介绍及日常管理的详解

    这篇文章主要介绍了Nginx 介绍及日常管理的详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10

最新评论