[解決済み] React-routerとnginx
2022-04-24 18:45:32
質問
reactアプリをwebpack-dev-serverからnginxに移行しているところです。
ルートURL "localhost:8080/login" にアクセスすると、単に404が表示され、nginxログでは、取得しようとしていることがわかります。
my-nginx-container | 2017/05/12 21:07:01 [error] 6#6: *11 open() "/wwwroot/login" failed (2: No such file or directory), client: 172.20.0.1, server: , request: "GET /login HTTP/1.1", host: "localhost:8080"
my-nginx-container | 172.20.0.1 - - [12/May/2017:21:07:01 +0000] "GET /login HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0) Gecko/20100101 Firefox/53.0" "-"
修正プログラムはどこにあるのでしょうか?
リアクトの私のルータービットはこんな感じです。
render(
<Provider store={store}>
<MuiThemeProvider>
<BrowserRouter history={history}>
<div>
Hello there p
<Route path="/login" component={Login} />
<App>
<Route path="/albums" component={Albums}/>
<Photos>
<Route path="/photos" component={SearchPhotos}/>
</Photos>
<div></div>
<Catalogs>
<Route path="/catalogs/list" component={CatalogList}/>
<Route path="/catalogs/new" component={NewCatalog}/>
<Route path="/catalogs/:id/photos/" component={CatalogPhotos}/>
<Route path="/catalogs/:id/photos/:photoId/card" component={PhotoCard}/>
</Catalogs>
</App>
</div>
</BrowserRouter>
</MuiThemeProvider>
</Provider>, app);
そして、私のnginxのファイルはこんな感じです。
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server {
listen 8080;
root /wwwroot;
location / {
root /wwwroot;
index index.html;
try_files $uri $uri/ /wwwroot/index.html;
}
}
}
EDIT
ログインしていない状態でlocalhost:8080にアクセスすると、ログインページが表示されるので、設定のほとんどが機能していることがわかります。これはlocalhost:8080/loginへのリダイレクトではなく、いくつかの反応コードによるものです。
解決方法を教えてください。
nginxの設定にあるlocationブロックは、次のようになっているはずです。
location / {
try_files $uri /index.html;
}
問題は、index.html ファイルへのリクエストは動作するが、他のリクエストも index.html ファイルに転送するよう nginx に指示していないことです。
関連
-
Nginxエージェントのリソース: net::ERR_NAME_NOT_RESOLVED の読み込みに失敗しました。
-
Nginx] エラー413 Request Entity Too Largeの解決方法
-
[解決済み] NGINXのproxy_passまたはproxy_redirect
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] Node.js + Nginx - 今度は何?
-
[解決済み] React-routerのURLを更新したり、手動で書き込んだりするとうまくいかない
-
[解決済み] Nginx -- rootとaliasによる静的ファイル提供の混乱
-
[解決済み] React Router v4で履歴にプッシュする方法は?
-
[解決済み】オプションのパスパラメータを持つReact Router
-
[解決済み】Nginx 403 forbidden for all files
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「設定ファイル/etc/nginx/nginx.confのテストに失敗しました」。この原因を知るにはどうしたらいいですか?
-
OSError: [Errno 98] アドレスはすでに使用中です。
-
NginxのRequest Entity Too Largeの解決法
-
nginx 起動プロンプト nginx: [emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
チャンクベンダーが大きすぎるため、最初の画面の読み込みが遅すぎるフロントエンド・プロジェクトの最適化
-
[解決済み] NGINXのproxy_passまたはproxy_redirect
-
[解決済み】Nginx 403 forbidden for all files
-
[解決済み] nginx が返すサーバーヘッダを変更するには?
-
[解決済み] nginxです。[server_names_hash_bucket_size を大きくする必要があります。
-
[解決済み] MIMEタイプ "text/html "が重複している?