質問編集履歴
3
文章を読みやすく修正
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
|
-
|
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
|
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
|
-
|
78
|
+
ですが代わりに以下二つのエラーが発生しています。
|
78
79
|
|
79
80
|
> GET http://<外部IP>:3000/api/v1/users net::ERR_CONNECTION_TIMED_OUT
|
80
81
|
|
2
環境の追記
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
冗長な文章を削除
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
|
-
|
23
|
+
ローカル環境ではこのようなエラーは出ていないのでGCEに移行した際の設定が足りていないようです。
|
23
|
-
|
24
|
+
cors.rbにてリクエスト側のIPはエラーメッセージを見ると該当の外部IP示しているのでここは合っていそうかと。。。
|
24
25
|
|
25
26
|
```cors.rb
|
26
27
|
Rails.application.config.middleware.insert_before 0, Rack::Cors do
|