Playframework如何在生产模式下管理动态资产

时间:2018-06-25 14:44:46

标签: java apache nginx playframework server


我搜索了一个解决方案,但还没有找到。

我有一个Play应用程序,可以在Linux文件系统上上传图像文件。 图像已成功存储在public / images目录中。

在开发模式下,一切正常,因为每次重新加载时我的类路径都会更新,在生产环境中它不会更新,因此我必须再次上演该应用程序。 即时通讯使用阶段构建我的应用,并在生产模式下从target / universal / stage / bin文件夹启动它。

我尝试了一个自定义资产控制器,但结果是相同的。

  public Result at(String path, String imageName) throws IOException {
            File imageFile = new File(imageName);
            byte[] byteArray = IOUtils.toByteArray(new FileInputStream(imageFile));
            return ok(new ByteArrayInputStream(byteArray));
    }

经过研究后,我的下一个想法是在nginx(端口81)上运行一个CDN,并在apache(端口80)上运行我的play应用,但我无法配置与apache正确连接的nginx。

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName localhost
  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  Alias /excluded /var/www/assets
</VirtualHost>

我还尝试将/ excluded url映射到我的本地目录/ var / www / assets,但是我真的不知道这项工作是否如此

我可以使用wget localhost:81在/ var / www / assets中下载index.html。

我希望有人可以帮助我吗? Nginx中的CDN可以在ip:81上运行,而apache可以在ip:80上运行吗?如果是,我如何配置nginx?我可以为/排除的网址设置别名吗?还有其他方法可以在生产模式下的运行时管理动态资产或资产吗?

谢谢

0 个答案:

没有答案