ポート 9003 (または他のポート) でサービスを提供するにはどうすればよいでしょうか?
私は VPS (ubuntu 16) 上で Apache WebServer を実行しています。標準では、ポート 80 で実行されます。ブラウザ経由で試すと、次のようになります。
http://104.XXX.YYY.237
問題なく動作します。(完全な PHP/MySQL アプリを実行しています)
.....
今、私はGolangで構築されたパブリックREST APIをポート9003(または任意のポート)で提供したいと考えています。
私はmain.goファイルに
func main() {
router := NewRouter()
log.Fatal(http.ListenAndServe(":9003", router))
}
アクセスしようとすると:
http://104.XXX.YYY.237:9003
まったく反応がありません。
...
私はローカルホスト上で同様の設定を実行しており、ターミナル、curl、ブラウザ、またはajax経由で次のようなアドレスに正常にアクセスできます。http://localhost:9003
つまり、私の API に間違いはありません。
...
私は Linux とサーバー構成についてほとんど知識がないので、少し調べてみると、問題はポート 9003 にあるのではないかと思いました。その結論をテストするために、Apache サービスを停止し、API のポートを 80 に変更したところ、なんとうまくいきました。ブラウザを使用して API にアクセスできました。
...
もう少し調べてみると、この(素晴らしい)Linux コマンドを見つけました:
ネットスタット -vatn
次のような応答がありました: (元の設定を復元しました)
tcp6 0 0 :::9003 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 104.XXX.YYY.237:80 177.XX.YYY.243:4297 TIME_WAIT
私はLinuxの専門家ではありませんが、最初の行は、9003ポートが開いていて、80や22のように使用できることを示しています。
しかし、最後の行には、サーバーが 104.XXX.YYY.237:80 をリッスンしていることがわかります。
つまり、1行が足りないのです。次のようなものを期待すべきだと結論づけます。
tcp6 0 0 104.XXX.YYY.237:9003 177.YY.XXX.243:4297 TIME_WAIT
それで、私の質問は次のとおりです:
_ 指定されたポートを使用して、VPS の IP アドレス (または後でドメイン) を使用して API への外部アクセスを提供できるようにするにはどうすればよいでしょうか? _ 私の結論について何か間違ったことを言いましたか?
前もって感謝します
答え1
問題を解決し、ポート 9003 で API への外部接続を直接許可することができました。
これを実現するために、VPS プロバイダーのコントロール パネルでファイアウォール ルールを編集しました。
ただし、ターミナルでそれを実行する方法を本当に学びたいです。