我正在为我的应用程序使用 React 单页应用程序。我已经使用Cloud Foundry在IBM Bluemix上托管了解决方案。我想要 2 个帮助。
-
如何用新的nginx配置覆盖现有的nginx配置以支持我的反应路由的URL重写?
-
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 错误。
有人可以在这里指导我解决上述问题吗?
谢谢。
- 如何用新的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
我认为这应该可以解决您的问题。
- 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
这会将构建包锁定到标记的版本,从而防止它从您下方更改。