开发者社区 > 域名解析DNS > 云解析DNS > 正文

域名解析隐性URL无法回显uri

例如:
域名:bxxx
隐性URL设置: http://a:1000
这是个nginxweb服务,访问http://a:1000 会默认跳转到 http://a:1000/aaaaa 路径页面;

但是当访问 http://bxxx 时,页面能够正常展示,但是url上没有携带/aaaaa 路径,仍然显示http://bxxx ;

会出现的问题:在http://bxxx (实际 http://a:1000/aaaaa)页面中跳转另一个子页面(实际http://a:1000/aaaaa/cccc)后,刷新页面又回到了初始页面http://bxxx(实际 http://a:1000/aaaaa),无法携带uri参数。

想确定下是我配置的有问题,还是隐性url就是隐藏的这么多

展开
收起
游客fngxlciscyspu 2024-01-12 12:08:19 460 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    隐性URL是隐藏的,不会在浏览器地址栏中显示。当你访问http://bxxx时,页面能够正常展示,但是URL上没有携带/aaaaa路径,仍然显示http://bxxx。这是因为隐性URL设置中的路径已经映射到了实际的URL上,但是在浏览器地址栏中并不会显示出来。

    在你的例子中,当访问http://bxxx(实际 http://a:1000/aaaaa)页面后,跳转到另一个子页面(实际http://a:1000/aaaaa/cccc),刷新页面后又回到了初始页面http://bxxx(实际 http://a:1000/aaaaa),无法携带uri参数。这是因为隐性URL的路径映射关系并没有改变,所以在刷新页面时,浏览器会重新请求原始的隐性URL,而不是携带uri参数的URL。

    要解决这个问题,你可以尝试以下方法:

    1. 使用显性URL重写规则,将隐性URL转换为显性URL。这样,在刷新页面时,浏览器会请求显性URL,从而携带uri参数。例如,你可以使用nginx的rewrite规则来实现这个功能:
    location / {
        rewrite ^(.*)$ http://a:1000$1 last;
    }
    
    1. 如果你不想使用显性URL重写规则,可以尝试在跳转到子页面时,手动添加uri参数。例如,你可以在跳转链接中使用JavaScript来实现这个功能:
    window.location.href = "http://a:1000/aaaaa/cccc?uri=" + encodeURIComponent(window.location.pathname);
    

    这样,在刷新页面时,浏览器会请求携带uri参数的URL。

    2024-01-12 21:28:48
    赞同 展开评论 打赏
  • 在Nginx中,如果您希望将来自http://bxxx的请求透明地代理至http://a:1000/aaaaa,并且保持浏览器地址栏显示http://bxxx及其后续的子路径,可以通过如下配置实现:

    server {
        listen 80; # 假设bxxx域名绑定的是80端口
        server_name bxxx;
    
        location / {
            proxy_pass http://a:1000/aaaaa;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_redirect off;
            proxy_intercept_errors on;
        }
    }
    

    上述配置中:

    • proxy_pass http://a:1000/aaaaa; 指定将所有到bxxx域名根目录的请求转发到a主机的1000端口下的aaaaa路径。
    • proxy_redirect off; 关闭默认的代理重定向行为,防止Nginx自动添加路径到重定向响应中。
    • proxy_set_header 设置了一些头部字段,确保上游服务器能正确识别客户端请求的真实来源。为了确保子页面的URI也被正确处理和保持,还需要确保后端应用能正确解析和响应相对路径的请求。当从http://bxxx/cccc刷新页面时,如果后端应用不能根据请求头中的Host字段正确处理,可能会返回到http://a:1000/aaaaa

    如果后端应用本身不支持这样的相对路径处理,您可能需要在Nginx配置中更精细地控制URL重写或代理行为,以适应这种应用场景。例如,可能需要对子路径做额外的重写处理:

    location / {
        proxy_pass http://a:1000/aaaaa;
        # 下面这行是关键,它会将请求的URI路径追加到proxy_pass的目标路径之后
        proxy_pass_request_uri on;
        # ...其他必要的header设置...
    }
    

    通常情况下proxy_pass指令已经默认具有这样的行为,除非在某些特殊场景下需要调整。因此,首先应检查后端应用对不同Host头的响应行为,确保它能够正确处理来自bxxx域名的请求,并根据请求的实际路径提供内容。可参考域名解析常见问题
    image.png

    2024-01-12 16:39:12
    赞同 展开评论 打赏
  • 在Nginx中,要实现您所描述的域名解析隐性URL跳转且保持浏览器地址栏显示原始域名的功能,可以通过代理和重写规则来配置。根据您的描述,似乎希望用户访问http://bxxx时看到的是http://a:1000/aaaaa的内容,并且在内部进行页面跳转后还能正确地维持当前路径。

    下面是一个基本的Nginx配置示例:

    server {
        listen 80; # 假设是HTTP,如果是HTTPS请配置443端口并添加SSL相关配置
        server_name bxxx;
    
        location / {
            proxy_pass http://a:1000/aaaaa;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_redirect off;
            # 下面这一行很重要,用于重写返回的Location头部信息
            proxy_intercept_errors on;
            error_page 301 302 307 = @handle_redirects;
        }
    
        location @handle_redirects {
            resolver YOUR_DNS_SERVER_IP [optional_args]; # 使用DNS服务器解析上游服务器
            set $new_location $upstream_http_location;
            if ($new_location ~* ^https?://[^/]+/) {
                set $new_location $new_location$request_uri;
            }
            proxy_pass $new_location;
        }
    }
    

    这个配置会将所有对bxxx的请求代理到http://a:1000/aaaaa,同时处理从上游服务器(即a:1000)返回的重定向响应,确保重定向的目标URL也被正确转换为bxxx域名下的相对路径。

    但请注意,如果在实际应用中http://a:1000/aaaaa中的子页面跳转是基于绝对路径做的,那么需要更精细地处理这些跳转,确保在转发给客户端之前将它们转化为相对于bxxx域名的路径。上述配置可能需要进一步调整以适应具体的应用场景和API响应方式。

    另外,请确认a:1000的服务能够正常处理来自bxxx域名的请求,并且其内部链接或者重定向逻辑可以适配这种情况。如果服务内部依赖于绝对路径,可能需要修改服务端代码或配置以支持相对路径跳转或动态生成正确的重定向URL。

    2024-01-12 15:55:02
    赞同 展开评论 打赏

阿里云云解析DNS产品相关资讯

相关产品

  • 云解析DNS
  • 相关电子书

    更多
    神龙云服务器产品及技术深度解析 立即下载
    弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
    又快又稳:阿里云下一代虚拟交换机解析 立即下载

    相关镜像