有两种标准方法可以做到这一点。首选/性能更高的方法是设置反向代理来为您的静态文件提供服务(您可以为不同的服务器配置不同的路由)。
反向代理方法(首选)
Apache/Nginx
首选是配置您的 Apache 或 nginx 反向代理,以便某个 url(比如 /assets/images/<custom-folder> 将直接为目录提供服务,而不是通过 Nodejs 代理。这更有效,因为 Apache/nginx 守护进程要快得多比 Node 提供文件。
[nginx 配置示例入站]
IIS节点
查看问题:Serving static files from iisnode with URL Rewrite
我没有设置 IISNode 的经验,但从外观上看,您可以让它为静态文件提供服务,而不是让 Sails.js 为文件提供服务,这样您就可以为不同的文件夹配置不同的路由。下面是一个提供静态文件的 IISNode 配置示例,我想您可以为不同的文件夹设置多个静态和静态服务重写规则。
<system.webServer>
<handlers>
<clear />
<add name="iisnode" path="/index.js" verb="*" modules="iisnode" />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
</handlers>
<rewrite>
<rules>
<rule name="static">
<action type="Rewrite" url="www{REQUEST_URI}" />
</rule>
<rule name="serve-static" stopProcessing="true">
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsFile" />
<add input="{REQUEST_URI}" pattern="^/www/$" />
</conditions>
</rule>
<rule name="node">
<action type="Rewrite" url="index.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
符号链接方法(更简单)
另一种(更简单的)方法是符号链接 Sails.js 资产目录中的文件夹,然后通过通常的 Sails.js 路由提供它。设置符号链接:
cd <assets-dir>
ln -s <full-path-of-large-images-dir> <folder-name>
例如:
cd assets/images
ln -s /var/images/large large
然后您将拥有一个文件夹assets/images/large,它指向/var/images/large 目录。