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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Nginx相关文章