我正在为我的应用程序使用React单页应用程序。我已经使用Cloud Foundry在IBM Bluemix上托管了解决方案。我需要2个帮助。
如何用新的配置覆盖现有的nginx配置以支持我的React路由的URL重写?
nginx服务器的URL重写配置是什么? (我正在使用nginx作为发射时间)
这是我用来托管在Cloud Foundry上的manifest.yml。我正在为node.js使用staticfile-buildpack。
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是我的应用程序域。我能够加载我的应用程序并通过点击操作将其传递到其他路线,但是当我强制刷新或从浏览器地址栏中更改网址时,它会显示404错误。
有人可以指导我解决上述问题。
谢谢。
答案 0 :(得分:0)
- 如何用新的配置覆盖现有的nginx配置,以支持我的React路由的URL重写?
您可以覆盖nginx.conf,但不建议使用staticfile buildpack。相反,请尝试使用buildpack提供的配置选项来实现您的目标。该buildpack有很多常用选项,因此您无需亲自配置Nginx。
https://docs.cloudfoundry.org/buildpacks/staticfile/index.html#config-options
xyz是我的应用程序域。我能够加载我的应用程序并通过点击操作将其传递到其他路线,但是当我强制刷新或从浏览器地址栏中更改网址时,它会显示404错误。
听起来您需要启用pushstate
支持。我认为将pushstate: enabled
添加到您的Staticfile
中应该可以解决您的问题。
- nginx服务器的URL重写配置是什么? (我正在使用nginx作为发射时间)
您可以查看为您的应用程序生成的Nginx配置。推送应用并启动后,运行cf ssh <app-name> -c "cat app/nginx/conf/nginx.conf"
。那应该将nginx配置转储到屏幕上。
buildpack:https://github.com/cloudfoundry/staticfile-buildpack.git
不要指向 any buildpack的主分支。这是一个移动的目标。提交承诺可以更改甚至中断。
通常应使用操作员提供的buildpack。如果运行cf buildpacks
,则可以在此处看到列表。如果这还不是很新,或者您的提供程序没有包含所需的buildpack,则可以使用git repo语法链接到在线存储库,但是请确保在URL中包含#<branch|tag>
。
例如:https://github.com/cloudfoundry/staticfile-buildpack.git#v1.4.29
这会将buildpack锁定到带标签的发行版中,以防止其从您身下变出来。