Cloud Foundry - 上下文路径路由显示 404 Not Found 页面
Cloud Foundry - Context path routing shows 404 Not Found page
我想使用上下文路径路由来访问我尝试部署的应用程序。我希望用户只能使用以下 URL.
访问该应用程序
https://my-app.domain.int/foo
下面是Staticfile.txt文件内容。
pushstate: enabled
下面是mainfest.yml文件内容
---
applications:
- name: my-app
memory: 1G
instances: 1
path: .
routes:
- route: my-app.domain.int/foo
buildpack: staticfile_buildpack
下面是目录结构。
dist
- index.html
- Staticfile.txt
- mainfest.yml
我尝试了以下解决方案,但没有帮助。
当我访问 URL 时,我得到 404 Not Found 页面。我想知道我是否遗漏了什么。我怎样才能让上下文路径起作用。
[注意:我正在使用 Azure Pivotal PCF 服务和 nginx 服务器]
只需将 Staticfile.txt
重命名为 Staticfile
(不带扩展名)。
static_buildpack
(在当前实现中)根据 Staticfile
配置生成 nginx.conf
:https://docs.cloudfoundry.org/buildpacks/staticfile/index.html#staticfile
为了更好地理解,请尝试下面的示例。
推送我的应用程序
my-app
目录树:
- index.html # with title "root-index"
- manifest.yml
- Staticfile
- public/
- bar/
- index.html # with title "bar-index"
manifest.yml
:
---
applications:
- name: my-app
routes:
- route: my-app.example.com/foo
- route: my-app.example.com/bar
buildpacks:
- https://github.com/cloudfoundry/staticfile-buildpack.git # latest
Staticfile
:
root: public
pushstate: enabled
测试一下
- 检查生成的 nginx.conf
:
(cf ssh my-app
cat /home/vcap/app/nginx/conf/nginx.conf
)
# [...] #
http {
# [...] #
server {
listen 8080;
server_name localhost;
# Based on the Staticfile: "root: public"
root /home/vcap/app/public;
# Based on the Staticfile: "pushstate: enabled"
if (!-e $request_filename) {
rewrite ^(.*)$ / break;
}
location / {
index index.html index.htm Default.htm;
}
location ~ /\. {
deny all;
return 404;
}
}
}
- 测试网址:
- http://my-app.example.com/ - 404 或其他应用程序
- http://my-app.example.com/foo -
root-index
因为 /public/foo/index.html
不存在
- http://my-app.example.com/bar -
bar-index
因为 /public/bar/index.html
存在
- http://my-app.example.com/bar/non-existent.html -
root-index
因为 /public/bar/non-existent.html
不存在
我想使用上下文路径路由来访问我尝试部署的应用程序。我希望用户只能使用以下 URL.
访问该应用程序https://my-app.domain.int/foo
下面是Staticfile.txt文件内容。
pushstate: enabled
下面是mainfest.yml文件内容
---
applications:
- name: my-app
memory: 1G
instances: 1
path: .
routes:
- route: my-app.domain.int/foo
buildpack: staticfile_buildpack
下面是目录结构。
dist
- index.html
- Staticfile.txt
- mainfest.yml
我尝试了以下解决方案,但没有帮助。
当我访问 URL 时,我得到 404 Not Found 页面。我想知道我是否遗漏了什么。我怎样才能让上下文路径起作用。
[注意:我正在使用 Azure Pivotal PCF 服务和 nginx 服务器]
只需将 Staticfile.txt
重命名为 Staticfile
(不带扩展名)。
static_buildpack
(在当前实现中)根据 Staticfile
配置生成 nginx.conf
:https://docs.cloudfoundry.org/buildpacks/staticfile/index.html#staticfile
为了更好地理解,请尝试下面的示例。
推送我的应用程序
my-app
目录树:
- index.html # with title "root-index"
- manifest.yml
- Staticfile
- public/
- bar/
- index.html # with title "bar-index"
manifest.yml
:
---
applications:
- name: my-app
routes:
- route: my-app.example.com/foo
- route: my-app.example.com/bar
buildpacks:
- https://github.com/cloudfoundry/staticfile-buildpack.git # latest
Staticfile
:
root: public
pushstate: enabled
测试一下
- 检查生成的 nginx.conf
:
(cf ssh my-app
cat /home/vcap/app/nginx/conf/nginx.conf
)
# [...] #
http {
# [...] #
server {
listen 8080;
server_name localhost;
# Based on the Staticfile: "root: public"
root /home/vcap/app/public;
# Based on the Staticfile: "pushstate: enabled"
if (!-e $request_filename) {
rewrite ^(.*)$ / break;
}
location / {
index index.html index.htm Default.htm;
}
location ~ /\. {
deny all;
return 404;
}
}
}
- 测试网址:
- http://my-app.example.com/ - 404 或其他应用程序
- http://my-app.example.com/foo -
root-index
因为/public/foo/index.html
不存在 - http://my-app.example.com/bar -
bar-index
因为/public/bar/index.html
存在 - http://my-app.example.com/bar/non-existent.html -
root-index
因为/public/bar/non-existent.html
不存在