无法使用openshift微服务设置nginx静态文件

问题描述 投票:0回答:1

我有一个基于 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 路由服务动态地执行此操作,而不是编写字符串。

感谢您的阅读!

reactjs nginx openshift nginx-reverse-proxy nginx-location
1个回答
0
投票

要解决 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 文件中手动更改配置。

© www.soinside.com 2019 - 2024. All rights reserved.