ポート443で実行されるHudson/Jenkinsのインストールがあるので、https://ci.mydomain.com
でアクセスできます。 Apache Httpdのようにポート80で実行されているWebサーバーはありませんが、ユーザーがhttp://ci.mydomain.com
と入力した場合は、https://...
にリダイレクトする必要があります。
iptables
で試してみました:
/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 443
/sbin/iptables-save
chkconfig --level 35 iptables on
しかし、ブラウザは接続に失敗したと言っています。したがって、ApacheWebサーバーをインストールしたくありません。http://ci.mydomain.com
からhttps://ci.mydomain.com
へのリダイレクトのみが必要です。
iptablesIS NOTここで必要なもの-昔ながらのHTTP(普通のテキストを退屈させるだけ)を話すことを期待しているブラウザをサーバーに送信していますそれはHTTPSを話している(暗号化されており、ブラウザにとって非常に混乱している)。
Webサーバーによって発行された 0シリーズリダイレクト がクライアントを適切なhttps:// URLに送信するようにします。 Apacheを実行している場合は、これをSSLRequireSSL
ディレクティブ( 手動入力 )と組み合わせて、暗号化されていないチャネルで暗号化する必要のあるリソースにクライアントがアクセスできないようにすることができます。
HTTPとHTTPSは異なるアプリケーションレベルのプロトコルであるため、トランスポートレベルでリダイレクトすることはできません。 Location
ヘッダーを使用して適切なHTTPリダイレクトを実行するには、ポート80にApacheやNginxなどを設定する必要があります。
80でリッスンしている比較的空白のVirtualHostをセットアップします。
RewriteEngineオン
RewriteRule(。*) https://foo.com $ 1
Httpからhttpsに移行することは、単にポートを切り替えるだけではありません。これらは2つの異なるプロトコルであり、Hudson/Jenkinsインストールはhttpではなくhttpsを探しています。
ポート80でリッスンするApacheのようなものをインストールせずにあなたがやりたいことをする方法がわかりません。
Httpとhttpsは、単純なポートリダイレクトが機能しない場合は十分に類似していないため、おそらくここでは行き詰まっています。
これが この質問 のフォローアップである場合、問題は、特権ポート(<1024)でJenkinsを実行しようとしていることです。ここでの質問では、ポート80と443を混同しています。
ポート8443(非特権HTTPSポートでは通常)でJenkinsを実行し、iptables
を使用して443および8443との間でリダイレクトします。
他の人が示唆しているように、http://
からhttps://
にリダイレクトするには、Apacheとmod_rewrite
が適切な選択です。または、小さなWebサーバーは、Location
ヘッダーを使用してリダイレクト(HTTP 301または302ステータス)を送信できる必要があります。