如何在 IBM bluemix Cloud foundry 上设置 nginx.conf 以进行单页应用程序路由,以及如



我正在为我的应用程序使用 React 单页应用程序。我已经使用Cloud Foundry在IBM Bluemix上托管了解决方案。我想要 2 个帮助。

  1. 如何用新的nginx配置覆盖现有的nginx配置以支持我的反应路由的URL重写?

  2. nginx服务器的URL重写配置是什么?(我正在使用nginx作为第一时间(

这是我的manifest.yml,我曾经在Cloud Foundry上托管过。我正在使用 node-buildpack 作为 node.js。

applications:
- buildpack: https://github.com/cloudfoundry/staticfile-buildpack.git
name: xyz
memory: 128M
stack: cflinuxfs2
path: build/
routes:
- route: xyz.eu-gb.mybluemix.net/
- route: xyz.eu-gb.mybluemix.net/store
- route: xyz.eu-gb.mybluemix.net/checkout

这里 xyz 是我的应用程序域。我能够加载我的应用程序并通过点击操作传递到其他路由,但是当我从浏览器地址栏硬刷新或更改 url 时,它向我显示 404 错误。

有人可以在这里指导我解决上述问题吗?

谢谢。

  1. 如何用新的nginx配置覆盖现有的nginx配置以支持我的反应路由的URL重写?

你可以覆盖nginx.conf,但不建议使用staticfile buildpack。 相反,请尝试使用构建包提供的配置选项来实现您的目标。 构建包有很多常用选项,所以你不需要自己下拉到配置 Nginx 的级别。

https://docs.cloudfoundry.org/buildpacks/staticfile/index.html#config-options

这里 xyz 是我的应用程序域。我能够加载我的应用程序并通过点击操作传递到其他路由,但是当我从浏览器地址栏硬刷新或更改 url 时,它向我显示 404 错误。

听起来您需要启用pushstate支持。 将pushstate: enabled添加到您的Staticfile我认为这应该可以解决您的问题。

  1. nginx服务器的url重写配置是什么?(我正在使用nginx作为第一时间(

您可以查看为应用生成的 Nginx 配置。 推送应用并启动后,运行cf ssh <app-name> -c "cat app/nginx/conf/nginx.conf"。 这应该将nginx配置转储到您的屏幕上。

构建包:https://github.com/cloudfoundry/staticfile-buildpack.git

不要指向任何构建包的主分支。 这是一个移动的目标。 提交到提交可能会更改甚至中断。

通常应使用操作员提供的构建包。 如果您运行cf buildpacks则可以在此处看到列表。 如果这还不够新,或者您的提供商不包含您需要的构建包,则可以使用 git 存储库语法在线链接到存储库,但请确保在 URL 中包含#<branch|tag>

例如:https://github.com/cloudfoundry/staticfile-buildpack.git#v1.4.29

这会将构建包锁定到标记的版本,从而防止它从您下方更改。

最新更新