nginx反向代理,并加上一个目录

比如我想通过127.0.0.1/play/ 访问127.0.0.1:9000
我现在的配置是这样:

location / {
        root   F:\Personal\ck;
        index  index.html;
}
location ~ ^/play/ {
        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;
        proxy_redirect off;
}

当我实际访问时127.0.0.1/play/时,它却访问了127.0.0.1:9000/play/ 我很疑惑,没什么没有直接访问9000端口,而是在后面带上了目录名呢?

阅读 20.6k
2 个回答

因为proxy_pass只是反向代理,没法重写URL规则,它只是修改主机名而已。
想去掉后面的东西,你得用rewrite

location ~^/play/ {
    proxy_pass    http://127.0.0.1:9000;
    rewrite       "^/play(.*)$" $1 break;
    ...
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题