我正在尝试从 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;