在我的域名上,我有一个Meteor应用程序的子域
http://meteor.example.com/
在此之下,我想个人应用程序,每个应用程序的URI。 说meteor应用聊天应该有这个url:
http://meteor.example.com/chat/
这是我的configuration:
location ~ /chat/(.*) { proxy_pass http://127.0.0.1:4000/$1; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-Forwarded-For $remote_addr; if ($uri != /snake_meteor/) { expires 30d; } }
我按照这个指南来configuration它。
现在,这部分工作。 它将请求传递给应用程序,并返回页面的正确的HTML,但是随后出现问题。 返回的HTML引用资源文件,如JS,CSS和图像。 HTML中的引用不幸的是在表单上
<script src="/somescript.js"></script>
所以它的要求
http://meteor.example.com/somescript.js
绝对path…
在应用程序中更改它们并不是一个真正的select。 也不能将资源放在域的根目录下。
有什么我可以在Nginxconfiguration中做到这一点工作? 或者我有其他方式做这个,像另一个子域的水平?
编辑:我的一个朋友build议检查参考头。 它部分地工作。 一些文件被提取,但build立一个websocket和其他一些东西失败。
我为此添加的configuration是
location / { if ($http_referer ~ /chat/) { rewrite ^(.*) /chat/$1 permanent; } }
这是一个可以接受的方式吗? 我敢肯定,这部分configuration可以以某种方式重写,也考虑到同一个域上的其他meteor应用程序,但我不是Nginxconfiguration专家。 请帮忙一下?
不幸的是,唯一合理的解决scheme是修复应用程序,以便生成正确的URL。 所有其他解决scheme将导致微妙的问题。