import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { CoreConfig } from './config.const';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
import { NestApplicationOptions } from '@nestjs/common';
async function bootstrap() {
const httpOptions ={
requestCert: false,
rejectUnauthorized: true,
};
const app = await NestFactory.create(AppModule);
const options = new DocumentBuilder()
.addServer(`http://localhost:${CoreConfig.app.port}`)
.setTitle('test UI/AI')
.setDescription('UI meta service')
.setVersion('1.0')
.addTag('test')
.addBearerAuth({type:'http', bearerFormat: 'authorization'})
.build();
const document = SwaggerModule.createDocument(app, options);
SwaggerModule.setup('docs', app, document);
app.enableCors();
app.setGlobalPrefix('ui');
await app.listen(CoreConfig.app.port);
}
bootstrap().then();
当我的应用程序使用nginx部署时,我们有一个前缀用于路由到这个NestJs应用程序(UI),所有请求都以404结束,但是本地一切正常。
下面是部署示例的结果
{"statusCode":404,"error":"Not Found","message":"Cannot GET /ui/"}
1条答案
按热度按时间ctehm74n1#
我配置了ingress-nginx,将所有访问
/api/
的流量发送到我的后端(NestJS应用程序)。问题是
/api/
部分被发送到我的NestJS应用程序,而这些路由都不存在。例如,我的graphql端点位于/graphl
,但使用ingress-nginx,所有流量都将被发送到/api/graphql
,因此404'ing。我的解决方法是在NestJS中添加一个全局前缀“API”,并手动将graphql路径设置为
/api/graphql
。您也可以使用ingress-nginx rewrites从通过ingress-nginx rewrite目标发送到后端的路由中删除
/api/