我有一个基于 openshift 的微服务项目。 我的一项服务使用 React,并且我正在使用 nginx 来提供静态文件。
现在假设我的 DNS 是 https://greg.com 我的微服务路径是 /info/pc/
我收到 Nginx 尝试从 https://greg.com/assets/index.js 提供文件的 403 错误
这是我的 Nginx default.conf
events {
worker_connections 1024;
}
http {
server {
listen 8080;
root /usr/share/nginx/html;
include /etc/nginx/mime.types;
location / {
try_files $uri /index.html;
}
}
}
我有另一个微服务,它的路径是/ 在那里它工作得很好。
我猜我需要指定微服务的路径,但我无法真正找到在哪里以及如何使用 openshift 路由服务动态地执行此操作,而不是编写字符串。
感谢您的阅读!
要解决 Nginx 403 错误并通过路径“/info/pc/”正确为微服务提供静态文件,您可以通过添加专门针对该路径的新位置块来更新 Nginx 配置。这是 Nginx default.conf 的更新版本:
events {
worker_connections 1024;
}
http {
server {
listen 8080;
root /usr/share/nginx/html;
include /etc/nginx/mime.types;
location / {
try_files $uri /index.html;
}
location /info/pc/ {
alias /usr/share/nginx/html/info/pc/;
try_files $uri $uri/ /index.html;
}
}
}
在此配置中,添加了
location /info/pc/
块来处理专门针对该路径的请求。 alias
指令指定该微服务的静态文件所在的文件路径。 try_files
指令用于尝试提供所请求的文件,如果该文件不存在,则会回退到提供index.html
文件。
通过使用这个新的位置块更新您的 Nginx 配置,Nginx 将能够在路径“/info/pc/”处为您的微服务提供静态文件,而不会遇到 403 错误。
关于使用OpenShift路由服务的动态配置,您可以在路由配置本身中定义所需的微服务路径。默认情况下,OpenShift 路由服务将根据定义的路径为您处理路由。这样,您就不需要手动修改每个微服务路径的 Nginx 配置。
要使用 OpenShift 路由服务动态配置微服务路径,您可以更新 OpenShift 配置 YAML 文件中的路由定义。这是一个例子:
yaml
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: my-route
spec:
host: greg.com
path: /info/pc/
to:
kind: Service
name: my-service
weight: 100
port:
targetPort: 8080
在此示例中,
path
字段设置为“/info/pc/”,它定义了所需的微服务路径。 to
字段指定要将流量路由到的目标服务,port
字段指定服务的目标端口。
通过使用所需的微服务路径更新路由配置,OpenShift 路由服务将为您处理路由,并且 Nginx 可以正确提供静态文件,而无需在 Nginx default.conf 文件中手动更改配置。