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