如何在IBM Bluemix Cloud Foundry上为单页应用程序路由设置nginx.conf,以及如何设置URL重写以支持spa路由?

时间:2018-07-09 10:15:55

标签: nginx ibm-cloud cloudfoundry

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

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

  2. 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错误。

有人可以指导我解决上述问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

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

您可以覆盖nginx.conf,但不建议使用staticfile buildpack。相反,请尝试使用buildpack提供的配置选项来实现您的目标。该buildpack有很多常用选项,因此您无需亲自配置Nginx。

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

  

xyz是我的应用程序域。我能够加载我的应用程序并通过点击操作将其传递到其他路线,但是当我强制刷新或从浏览器地址栏中更改网址时,它会显示404错误。

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

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

您可以查看为您的应用程序生成的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锁定到带标签的发行版中,以防止其从您身下变出来。