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

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

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

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

8404閲覧

Web APIの外部からの接続(プロトコル、IPアドレス、ポート番号の設定、UvicornとFastAPI)

sugamat

総合スコア2

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/04/18 10:09

fastapiを利用して、Web APIを作成したと思っております。
VPS上で、uvicornにより、サーバーを立ち上げると、下図のような画面になります。

イメージ説明

これが、ローカル環境であれば、ブラウザで127.0.0.1:8000に接続できますが、
VPS環境で外部から接続する場合は、どのようにすれば良いのでしょうか?
VPS内のウェブサーバーとの接続は、プロトコルがHTTPSで、ポート番号は443にしてあります。

ポート番号を443にして、立ち上げようとすると、
下記のようなエラーが出ます。
イメージ説明

逆に、VPSのファイアウォールの設定でポート番号8000を開いてみましたが、
それもうまくいきません。

Web APIにおける
プロトコルとIPアドレスとポート番号に関する基本的な考え方について
アドバイスを頂けると大変助かります。

VPS: AWS, Lightsail
OS: Ubuntu
Web Server: Apache

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

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

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

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

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

guest

回答1

0

VPS内のウェブサーバーとの接続は、プロトコルがHTTPSで、ポート番号は443にしてあります。

Web Server: Apache

これは、Apache で、リバースプロキシの設定をされているということでしょうか?

Apache へのアクセスを localhost:8000 へ、リバースプロキシで転送する設定にすれば良いと思うのですが、Apache は、どのような設定になっているのでしょうか?

投稿2021/04/18 11:10

CHERRY

総合スコア25171

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

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

sugamat

2021/04/18 23:28

アドバイスありがとうございます。無知でして、Apacheでは、リバースプロキシの設定をしておりませんでした。調べて、いくつか試してみました。この方向で進めれば、APIのサーバーとの接続ができそうなことが分かりました。HTTP(80番)であれば、エラーは出ますが、応答があります。HTTPS(443番)だと、証明書と鍵の設定をしても、まだ見当たらない(404)というエラーが出る状況です。前者の方は、Uvicornで、さらなる設定(https://fastapi.tiangolo.com/ja/advanced/behind-a-proxy/)が必要だと思われるので、さらに試してみたいと思います。
sugamat

2021/04/20 12:17

Uvicornのさらなる設定について、追記します。リバースプロキシの設定で、転送前のURLの末尾を/XXXにしたとします。(例:ProxyPass /XXX http://127.0.0.1:8000)すると、Uvicornでサーバーを立ち上げる際に、uvicorn api:api --root-path /XXXと、ルートパスを設定すると、openAPIドキュメントへアクセス可能になります。一方、FastApiのパスの定義からは、先頭の/XXXを取り除く必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問