
そこで、私は VPS で複数の Web ページを実行し、Apache の仮想ホストを利用して、サイトにアクセスするすべてのユーザーが適切なサイトに送信されるようにしています。残念ながら、Jenkins インスタンスを設定した後に気付いたのは、異なる仮想ホストの VPS を指すこれらのドメインのいずれかにアクセスし、それに :8080 を追加して Jenkins サーバーにアクセスできることです。これを防止し、ip:port 経由でのみ Jenkins サーバーにアクセスできるようにする方法を見つけたいと思います。ご協力いただければ幸いです。
追加の質問ですが、ip:80 への接続試行も中止できる方法はありますか? よろしくお願いします。
答え1
これらのドメインのいずれかにアクセスし、
:8080
それらに追加することで Jenkins サーバーにアクセスできます。これを防ぎ、 経由でのみ Jenkins サーバーにアクセスできるようにする方法を見つけたいと思いますip:port
。
コメントで言及されているように、最初のステップは、パブリック アクセスをブロックすることですyour_ip:8080
(Jenkins はこのポートで内部的に実行できます)。これを行う方法は、おそらく VPS によって異なります (ただし、iptables またはファイアウォール インターフェイスから始めるのがよいでしょう)。
:XX
2番目のステップは、ポートaの「デフォルト」Apache仮想ホストを作成することです。リバースプロキシ(Apacheを使用してmod_proxyモジュール)を設定し、プロキシターゲットをポートで動作するJenkinsへの(ローカル)参照として設定します:8080
。このリバースプロキシは、そうでなければ公開ブロックされるJenkinsへのアクセスを許可するものです。特に興味があるのは、Apache の背後で Jenkins を実行する際の公式 Jenkins wiki ノート。
ノート
リバース プロキシを特定のポートの「デフォルト」ホストにしたい理由は、Apache と名前ベースの仮想ホストでは、
:XX
IP が要求されたときにこの「デフォルト」ホスト (通常はポートを持つ最初の仮想ホスト) が返されるためです。リバース プロキシのポートは、仮想ホスト エントリによって定義されます。ただし、Apache と Jenkins が同じサーバー上で動作している場合、このポートは Jenkins が動作するポートと同じにすることはできません (例
:8080
)。Apache 設定に
Listen
ポートの適切なディレクティブを追加することを忘れないでください。:XX
ポート
:443
(SSL) を使用する場合、そのポートの証明書には有効な名前として IP が含まれている必要があります。そうでない場合は、証明書の警告が表示される可能性があります。
明確に言うと、ポートは:XX
単なる例/プレースホルダーであり、選択した任意のポートを意味します。
接続の試行も中止できる方法はありますか
ip:80
?
Apache をListen
以外のポートでのみ使用します:80
。ただし、これにより、サイトへの通常のポート:80
HTTP アクセスがすべて切断されます (つまり、ユーザーがhttps://
ブラウザに明示的に入力したり、明示的なリンクを使用してアクセスしたりしない限りhttps://
、接続できません)。
妥協案として、上記と同じ手法 (ポート の「デフォルト」ホストを使用:80
) を使用して、リクエストを (プロキシではなく) メイン サイトまたは他の場所 (例https://www.google.com
) にリダイレクトすることができます。