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

试图让url重写与端口转发一起工作,但似乎不起作用.我的应用程序服务器运行在:8080端口,而nginx工作在默认值80.所以我不仅要重写网址,还要将请求转发到另一个端口.实际上,我唯一想做的就是通过它的快捷方式http:// localhost / tom查询现有资源http:// loca

试图让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

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部