美文网首页
关于Nginx请求URL自动添加斜杠/的端口问题

关于Nginx请求URL自动添加斜杠/的端口问题

作者: 万能的y | 来源:发表于2020-05-19 18:51 被阅读0次

    http://www.easysb.cn/2020/03/575.html

    server_name_in_redirect off;
    port_in_redirect off;

    location /autotest 中加入
    proxy_set_header Host $host

    关于Nginx请求URL自动添加斜杠/的端口问题


    概述

    最近在使用Nginx做了两层,第一层为用户访问的Nginx反向代理,监听端口为80,第二层为处理本地静态文件、并将json数据请求代理到apche,监听端口为8080。在测试的过程中,发现一个小问题,就是当请求的URL没有斜杠时,会自动默认301跳,转添加斜杠/,通过Location跳转,跳转时带上了后端nginx的端口,比如:

    当我请求一下地址为:http://www.easysb.cn/product时,返回的请求结果为Location跳转,新的URL为http://www.easysb.cn:8080/product/,导致浏览器无法正确访问。

    解决方案

    通过查阅Nginx相关的文档,找到三个和此相关的配置指令,分别为:

    Syntax: absolute_redirect on | off;
    Default:    absolute_redirect on;
    Context:    http, server, location
    This directive appeared in version 1.11.8.
    
    If disabled, redirects issued by nginx will be relative.
    
    
    Syntax: server_name_in_redirect on | off;
    Default:    server_name_in_redirect off;
    Context:    http, server, location
    Enables or disables the use of the primary server name, specified by the 
    server_name directive, in absolute redirects issued by nginx. When the 
    use of the primary server name is disabled, the name from the “Host” 
    request header field is used. If this field is not present, the IP 
    address of the server is used.
    
    
    Syntax: port_in_redirect on | off;
    Default:    port_in_redirect on;
    Context:    http, server, location
    Enables or disables specifying the port in absolute redirects issued 
    by nginx.
    
    

    简单来说,absolute_redirect是指控制跳转的url是绝对路径还是相对路径,这个指令是在1.11.8版本才出现。绝对路径就是刚刚上面的http://www.easysb.cn/product,相对路径就是/product。很显然,只有在这个开关为开的时候,才会影响到后面两个指令。我这部署的nginx为1.10.1,所以在1.11.8之前应该都是开的。

    server_name_in_redirect指令是只跳转的URL的域名是用配置文件nginx.conf中的配置的server_name,还是用请求中获取。默认值为off,即从请求中获取。

    port_in_redirect指令是只跳转的URL的端口是用配置文件nginx.conf中的配置的port,还是用请求中获取。默认值为on,即配置文件定义。

    了解完三个指令之后,就很容易解决了,只需要将第二个nginx的port_in_redirect将其关闭,直接从请求中获取,即:

    # absolute_redirect on # 只有1.11.8 才支持,低版本不需要配置
    server_name_in_redirect off;
    port_in_redirect off;
    
    

    参考

    相关文章

      网友评论

          本文标题:关于Nginx请求URL自动添加斜杠/的端口问题

          本文链接:https://www.haomeiwen.com/subject/ifciohtx.html