Nginx 代理路径

Nginx 代理路径

我正在尝试从 nginx 代理另一个位于 localhost:20000 的 Web 服务器。此方法有效:

location/ {
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_pass http://127.0.0.1:20000
}

但是如果我将其更改为:

location /myApp {
proxy_set_header..

我只能加载 index.html 文件,其他所有 .css 和 .js 都 404。我可以在浏览器的标头中看到对这些文件的请求将转到 mysite.com/jquery.js 而不是 mysite.com/myApp/jquery.js,所以我猜它们当时没有被代理,这就是它们 404 的原因。这些 URL 的路径是相对编码的 ()。我该如何让它工作。我无法更改代理 index.html 文件中的路径。谢谢

编辑。后端网络服务器是 thttpd,它很古老。这会影响 set_head Host 吗?抱歉,我不太熟悉该层的工作原理。

答案1

首先,location /myApp {}必须在 之上location {}。其次,可能更重要的是,你可以直接提供静态文件,通过正确分配root和添加如下部分:

location ~* \.(css|jpg|png|gif|jpeg|js|ico|swf|mp3)$ { break; }

如果您想修改 URI,以下location / {}部分可能会有所帮助:

rewrite ^/(.*)$ /myApp/$1 break;

相关内容