加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

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

发布时间:2020-12-13 21:18:52 所属栏目:Nginx 来源:网络整理
导读:试图让url重写与端口转发一起工作,但似乎不起作用. 我的应用程序服务器运行在:8080端口,而nginx工作在默认值80.所以我不仅要重写网址,还要将请求转发到另一个端口. 实际上,我唯一想做的就是通过它的快捷方式http:// localhost / tom查询现有资源http:// l

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读