flutter web 构建版本但 nginx 路由 404

un *_*Lim 5 nginx flutter flutter-web

类似案例: flutter-web-app-blank-screen-in-release-mode

我有一个AWS EC2云服务器。我在我的 EC2 服务器中构建了一个 flutter web 版本。并将 flutter web index.html 交叉连接到 Nginx。

> $ flutter build web

 Building with sound null safety 

Compiling lib/main.dart for the Web...                           1,491ms
Run Code Online (Sandbox Code Playgroud)

所以EC2可以200 OK。 在此输入图像描述

并路由导航到另一个页面并刷新。 在此输入图像描述 在此输入图像描述

我的 EC2 服务器 nginx 配置是:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/flutter_web_project/build/web; # <- the flutter build web released result folder

        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                try_files $uri $uri/ =404;
        }
}
Run Code Online (Sandbox Code Playgroud)

我使用了 url_strategy 依赖项

dependencies:
  flutter:
    sdk: flutter

    url_strategy: ^0.2.0
Run Code Online (Sandbox Code Playgroud)

和 main.dart 来源:

...
import 'package:url_strategy/url_strategy.dart';

void main() {
  setPathUrlStrategy();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'flutter web sample',
      theme: ThemeData(
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: locationPlatform(),
      onGenerateRoute: WebRouter.generate,
      initialRoute: '/',
    );
  }
...
Run Code Online (Sandbox Code Playgroud)

小智 19

尝试更新 nginx 配置。它将适用于直接网址。

 location / {
    try_files $uri $uri/ /index.html;
 }
Run Code Online (Sandbox Code Playgroud)