微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nginx – 重写和pass_proxy到另一个端口导致404找不到

试图让url重写与端口转发一起工作,但似乎不起作用.

我的应用程序服务器运行在:8080端口,而Nginx工作在认值80.所以我不仅要重写网址,还要将请求转发到另一个端口.

实际上,我唯一想做的就是通过它的快捷方式http:// localhost / tom查询现有资源http:// localhost:8080 /#/ cat / tom而不进行任何重定向.

这是我根据Nginx doc和其他问题制作的内容

server {
    listen       80;
    server_name  localhost;
    root /;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        rewrite ^/([a-z]+)$/#/cat/$1 break;
        proxy_pass http://localhost:8080;
        proxy_redirect off;
    }

    ...
}

尝试了其他配置,但都不起作用.当我访问http:// localhost / tom时,它表示在http:// localhost:8080 /#/ cat / tom按预期工作时找不到404.

日志没有任何错误提及.

如何按预期强制这项工作?

最佳答案
问题是#/ cat / tom是客户端应用程序的指令,而不是服务器端应用程序的指令.这意味着它需要发送到客户端(通过重定向).

例如:

location = /tom {
    return 302 /#/cat/tom;
}
location / {
    proxy_pass http://localhost:8080;
    ...
}

你在问题中提到你试图在没有重定向的情况下这样做,但不幸的是,如果你看一下URL的结构,你会注意到#之后没有发送到服务器.有关更多信息,请参见this document

原文地址:https://www.jb51.cc/nginx/435445.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐