Answers:
我相信您可以使用重写来删除URL的多余部分。就您而言,我认为您可以使用:
location /route/ {
rewrite ^/route/?(.*)$ /$1 break;
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
但是,如果您的应用程序具有内部链接,它们可能仍指向/ abc / foo,而如果您执行此操作,则它们需要指向/ route / abc / foo,以便正确发送原始请求。如果可能,最好保留nginx配置,而配置应用程序以使其知道位于子目录中。
我知道这是一个老问题,但是当我尝试解决同一问题时,这对我来说是Google的热门话题!
尝试以下
location /route/ {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
vim nginx.conf
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
location / {
proxy_pass http://compute-1-36:8787;
proxy_redirect http://compute-1-36:8787/ $scheme://$host:8080/;
}
}
该代码在8080上侦听,并重定向到compute-1-36上的端口8787。您可以在位置/中选择其他路径
/
删除该位置中列出的前缀的方法很容易证明,简单地添加即可。