質問編集履歴

3

文章を読みやすく修正

2022/04/17 01:05

投稿

iyore888
iyore888

スコア40

test CHANGED
File without changes
test CHANGED
@@ -11,17 +11,18 @@
11
11
  ### インフラの構成
12
12
  サーバはGCEで立てており、フロントはvueでGCEに直接構築、API側はRAILSでGCEの中にdockerコンテナで動作させている構成です。
13
13
  vueは8080ポートを、Railsは3000ポートを使用しています。
14
+ WebサーバとしてNginxを使っており、80ポートにきたリクエストは8080にポートフォワードするように設定しています。
14
15
 
15
16
  ### 困っていること
16
17
  ローカルでの動作確認は取れているのですが、GCEにデプロイした際にうまく動かなくなっている状態です。
17
18
  Chromeのデベロッパーツールで確認すると、以下のようなエラーが出ています。
18
- 一応CORSエラーに関して解決てると思うのですが、念の為経緯として記載します。
19
+ 下述するCORSに関するエラー解決できてると思うのですが、念の為GCEに移行してから対処した経緯として記載します。
19
20
 
20
21
  > Access to 'XMLHttpRequest' at `http://localhost:3000/api/v1/users` from origin `http://<GCEの外部IP>'`has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space `local`.
21
22
 
22
- 恐らくCORSの設定がうまくできていない事によるものだと思います
23
+ 恐らくCORSの設定がうまくできていない事によるものでした
23
- ローカル環境ではこのようなエラーは出ていないのでGCEに移行した際の設定が足りていなようです。
24
+ ローカル環境ではこのようなエラーは出ていないのでGCEに移行した際の設定が足りていなかったようです。
24
- cors.rbにてリクエスト側のIPはエラーメッセージ見ると該当の外部IPているのでここは合っていそうかと。。
25
+ エラーメッセージではoriginに外部IP示していたので、cors.rbにてリクエスト側のIPをlocalhostから外部IPに変更ました
25
26
 
26
27
  ```cors.rb
27
28
  Rails.application.config.middleware.insert_before 0, Rack::Cors do
@@ -37,8 +38,7 @@
37
38
  ```
38
39
 
39
40
  あと分からないのが、client.tsに記載のあるaxiosの設定でして。
40
- vueからRailsへのリクエストなのでlocalhostでも繋がるのかなと思ったのですが、うまくいかない状態
41
+ vueからRailsへのリクエストなのでlocalhostでも繋がるのかなと思ったのですが、うまくいきませんした
41
- またNginxではvueを使っている関係で、80ポートにきたリクエストは8080にポートフォワードするように設定しています。
42
42
 
43
43
 
44
44
  ```client.ts
@@ -53,13 +53,13 @@
53
53
 
54
54
  ```
55
55
 
56
- あと以下のようなWebsocket関連のエラーも同時に出ているようです
56
+ あと以下のようなWebsocket関連のエラーも同時に出ていました
57
57
 
58
58
  > GET http://localhost:3000/api/v1/users net::ERR_FAILED
59
59
 
60
60
  > WebSocketClient.js?5586:16 WebSocket connection to 'ws://10.128.0.4:8080/ws' failed:
61
61
 
62
- ### axiosの指定を外部IPにしてみた
62
+ ### そこでaxiosの指定を外部IPにしてみた
63
63
 
64
64
  リクエストする先のURLに関してはlocalhost指定にしていたのを、外部IPにしてみました。
65
65
  ```client.ts(書き換え後)
@@ -74,7 +74,8 @@
74
74
 
75
75
  ```
76
76
 
77
+ そうするとCORS関連のエラーは解消しました!
77
- そうるとCORS関連のエラー消えた代わりに以下二つのエラーが発生しています。
78
+ すが代わりに以下二つのエラーが発生しています。
78
79
 
79
80
  > GET http://<外部IP>:3000/api/v1/users net::ERR_CONNECTION_TIMED_OUT
80
81
 

2

環境の追記

2022/04/16 07:23

投稿

iyore888
iyore888

スコア40

test CHANGED
File without changes
test CHANGED
@@ -3,10 +3,10 @@
3
3
  Rspec - 4.0.2
4
4
  Vue3 - @vue/cli 5.0.4
5
5
  Typescript - 4.6.3
6
- Docker - 20.10.14
6
+ Docker - 20.10.14(OS:Debian - 11.3)
7
7
  Mysql - 8.0
8
8
  Nginx - 1.14.2
9
- GCE
9
+ GCE(OS:Debian - 10.12)
10
10
 
11
11
  ### インフラの構成
12
12
  サーバはGCEで立てており、フロントはvueでGCEに直接構築、API側はRAILSでGCEの中にdockerコンテナで動作させている構成です。

1

冗長な文章を削除

2022/04/16 07:22

投稿

iyore888
iyore888

スコア40

test CHANGED
File without changes
test CHANGED
@@ -13,14 +13,15 @@
13
13
  vueは8080ポートを、Railsは3000ポートを使用しています。
14
14
 
15
15
  ### 困っていること
16
+ ローカルでの動作確認は取れているのですが、GCEにデプロイした際にうまく動かなくなっている状態です。
16
17
  Chromeのデベロッパーツールで確認すると、以下のようなエラーが出ています。
17
18
  一応CORSエラーに関して解決してると思うのですが、念の為経緯として記載します。
18
19
 
19
20
  > Access to 'XMLHttpRequest' at `http://localhost:3000/api/v1/users` from origin `http://<GCEの外部IP>'`has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space `local`.
20
21
 
21
22
  恐らくCORSの設定がうまくできていない事によるものだと思います。
22
- アプリケーションとしては構築済みで、ローカル環境ではこのようなエラーは出ていないのでGCEに移行した際の設定が足りていないようです。
23
+ ローカル環境ではこのようなエラーは出ていないのでGCEに移行した際の設定が足りていないようです。
23
- 以下のファイルを参照して頂きたいのですが、cors.rbにてリクエスト側のIPはエラーメッセージを見ると該当の外部IP示しているのでここは合っていそうかと。。。
24
+ cors.rbにてリクエスト側のIPはエラーメッセージを見ると該当の外部IP示しているのでここは合っていそうかと。。。
24
25
 
25
26
  ```cors.rb
26
27
  Rails.application.config.middleware.insert_before 0, Rack::Cors do