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

sbdsn5lh  于 8个月前  发布在  Nginx
关注(0)|答案(1)|浏览(110)

我在OpenShift上有一个微服务项目。我的一个服务使用react,我使用nginx来提供静态文件。
现在假设我的DNS是https://greg.com,微服务路径是/info/pc/
我得到一个403错误的Nginx试图从https://greg.com/assets/index.js提供文件
这是我的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路由服务动态地完成它,而不是编写字符串。
感谢您的阅读!

kuuvgm7e

kuuvgm7e1#

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

相关问题