web-dev-qa-db-ja.com

httpからhttpsにリダイレクトします

ポート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へのリダイレクトのみが必要です。

2
Tim

iptablesIS NOTここで必要なもの-昔ながらのHTTP(普通のテキストを退屈させるだけ)を話すことを期待しているブラウザをサーバーに送信していますそれはHTTPSを話している(暗号化されており、ブラウザにとって非常に混乱している)。

Webサーバーによって発行された 0シリーズリダイレクト がクライアントを適切なhttps:// URLに送信するようにします。 Apacheを実行している場合は、これをSSLRequireSSLディレクティブ( 手動入力 )と組み合わせて、暗号化されていないチャネルで暗号化する必要のあるリソースにクライアントがアクセスできないようにすることができます。

10
voretaq7

HTTPとHTTPSは異なるアプリケーションレベルのプロトコルであるため、トランスポートレベルでリダイレクトすることはできません。 Locationヘッダーを使用して適切なHTTPリダイレクトを実行するには、ポート80にApacheやNginxなどを設定する必要があります。

5
Alex

80でリッスンしている比較的空白のVirtualHostをセットアップします。

RewriteEngineオン

RewriteRule(。*) https://foo.com $ 1

3
MrTuttle

Httpからhttpsに移行することは、単にポートを切り替えるだけではありません。これらは2つの異なるプロトコルであり、Hudson/Jenkinsインストールはhttpではなくhttpsを探しています。

ポート80でリッスンするApacheのようなものをインストールせずにあなたがやりたいことをする方法がわかりません。

2
Chris Ting

Httpとhttpsは、単純なポートリダイレクトが機能しない場合は十分に類似していないため、おそらくここでは行き詰まっています。

1
user48838

これが この質問 のフォローアップである場合、問題は、特権ポート(<1024)でJenkinsを実行しようとしていることです。ここでの質問では、ポート80と443を混同しています。

ポート8443(非特権HTTPSポートでは通常)でJenkinsを実行し、iptablesを使用して443および8443との間でリダイレクトします。

他の人が示唆しているように、http://からhttps://にリダイレクトするには、Apacheとmod_rewriteが適切な選択です。または、小さなWebサーバーは、Locationヘッダーを使用してリダイレクト(HTTP 301または302ステータス)を送信できる必要があります。

0
Bruno