質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

11332閲覧

nginxのリバースプロキシを通してapiサーバーに送ったリクエストが404エラーでした

jpskgc

総合スコア19

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2019/08/10 01:59

前提・実現したいこと

nginxをdocker環境で利用しようとしています。
apiへのrequestをnginxのリバースプロキシ経由で行いたいのですが、
実際には404エラーになってしまいます。

発生している問題・エラーメッセージ

ローカルのdocker環境でapiサーバーにリクエストを飛ばすと、以下のようなエラーが表示されます。

nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:06 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:06 +0000] "GET /static/js/bundle.js HTTP/1.1" 304 0 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:07 +0000] "GET /static/js/0.chunk.js HTTP/1.1" 304 0 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:07 +0000] "GET /static/js/main.chunk.js HTTP/1.1" 304 0 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:07 +0000] "GET /static/js/bundle.js.map HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:08 +0000] "GET /static/js/0.chunk.js.map HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:08 +0000] "GET /static/js/main.chunk.js.map HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" api_1 | [GIN] 2019/08/09 - 22:19:09 | 404 | 41.937µs | 172.23.0.5 | GET /articles nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:09 +0000] "GET /api/articles HTTP/1.1" 404 18 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:10 +0000] "GET /sockjs-node/info?t=1565389150444 HTTP/1.1" 200 90 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-" nginx_1 | 172.23.0.1 - - [09/Aug/2019:22:19:10 +0000] "GET /manifest.json HTTP/1.1" 304 0 "http://localhost:3050/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" "-"

該当のソースコード

//フォルダ構成 article ├ client │ └ nginx │ └ default.conf ├ api ├ nginx │ └ default.conf └ docker-compose.yml

yml

1//docker-compose.yml 2version: '3' 3services: 4 nginx: 5 restart: always 6 build: 7 dockerfile: Dockerfile.dev 8 context: ./nginx 9 ports: 10 - '3050:80' 11 depends_on: 12 - client 13 - api 14 api: 15 build: 16 dockerfile: Dockerfile.dev 17 context: ./api 18 volumes: 19 - ./api:/app 20 depends_on: 21 - db 22 tty: true 23 environment: 24 - AWS_ACCESS_KEY_ID 25 - AWS_SECRET_ACCESS_KEY 26 - MYSQL_USER 27 - MYSQL_PASSWORD 28 - MYSQL_HOST 29 client: 30 build: 31 dockerfile: Dockerfile.dev 32 context: ./client 33 volumes: 34 - /app/node_modules 35 - ./client:/app

conf

1//nginx/default.conf 2upstream client { 3 server client:3000; 4} 5 6upstream api { 7 server api:2345; 8} 9 10server { 11 listen 80; 12 13location / { 14 proxy_pass http://client; 15} 16 17location /sockjs-node { 18 proxy_pass http://client; 19 proxy_http_version 1.1; 20 proxy_set_header Upgrade $http_upgrade; 21 proxy_set_header Connection "Upgrade"; 22} 23 24location /api { 25 rewrite /api/(.*) /$1 break; 26 proxy_pass http://api; 27 } 28}

conf

1//client/nginx/default.conf 2server { 3 listen 3000; 4 5 location / { 6 root /usr/share/nginx/html; 7 index index.html index.htm; 8 try_files $uri $uri/ /index.html; 9 } 10}

完全なソースコードは以下のgithubにあります。
https://github.com/jpskgc/article

試したこと

実際にelastic beanstalkにデプロイしたurlを叩いてみると、502 Bad Gatewayでした。
http://multidocker-env.vwnrixavuv.ap-northeast-1.elasticbeanstalk.com/api/articles

補足情報(FW/ツールのバージョンなど)

・client: react/axios ・api: golang/gin ・web-server: nginx ・db: mysql ・container: docker ・ci-tool: travis ・deploy: aws elastic beanstalk

以上、お手数ですがご教授いただけると幸いです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

location /api { rewrite /api/(.*) /$1 break; proxy_pass http://api; } }

となっているので

http://localhost:3050/api/articles -> http://api/articles

と 変換されそうですが、
https://github.com/jpskgc/article/blob/master/api/main.go#L103-L105

をみると、 /api/articles が来ることを期待しているようにみえます。

なので、 http://localhost:3050/api/api/articles なら404以外になったりしないでしょうか?
※ もしそうなら、nginxのconfを修正すると良い気がします。

投稿2019/08/10 03:37

mokemokechicken

総合スコア948

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mokemokechicken

2019/08/10 03:39

あ、自己解決されたんですね。 良かったです。
guest

0

自己解決

default.confから以下の一行を削除したところ解決しました。

rewrite /api/(.*) /$1 break;

これによって/api/articlesにリクエストが飛ぶようになりました。
(逆にいうと、この一行によって/api/がリクエスト時に消されていた)

https://stackoverflow.com/questions/57438522/request-to-api-servergolang-via-nginx-failed-and-returned-404-error?noredirect=1

投稿2019/08/10 03:28

jpskgc

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問