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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Q&A

解決済

1回答

5653閲覧

80ポート(http)と443ポート(https)を共存したうえで、リダイレクトは可能でしょうか?

A.S9999

総合スコア16

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

0グッド

0クリップ

投稿2019/12/12 01:13

サーバ環境は、以下となります。
apache2.4.8 
CentS6

httpdサービスが2つ存在しており、その1つにsslを適用する予定です。
<http1>
servername:test_server.com
DocumentRoot:/var/inetpub/wwwroot/html1
DirectoryIndex:index.html
SetEnvIfNoCase Request_URI "/HTML1/" req_html1

<http2> servername:test_server.com DocumentRoot:/var/inetpub/wwwroot/html2 DirectoryIndex:index.html SetEnvIfNoCase Request_URI "/HTML2/" req_html2

その場合、http1を443 、http2を80 ポートに設定し、SSLを適用して、
それぞれhttps://test_server.com/HTML1/index.html、と
http://test_server.com/HTML2/index.html でアクセスできることは
確認しました。
この状態で、http1のディレクトリにhttpのURLでアクセスした場合は、https へリダイレクトしたいと考えています。
http://test_server.com/HTML1/index.html

https://test_server.com/HTML1/index.html

http1のconf内に、リダイレクトの記述をしたのですが、http2の80ポートと認識されるのか、うまくhttpsへのリダイレクトがされません。
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</ifModule>

リダイレクトの記述に不足項目など何か誤っている箇所があるのでしょうか?
もしくは、このhttpの構成では、うまくリダイレクトはできないのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

解決済みのところ蛇足ですが追記しておきます

http2 (port 80のhttp)は単にリダイレクトするだけのhttpdサーバーとなっているためリソースの無駄が多いので、停止してしまってもいい気がします。

  • http2停止
  • http1で、http(port 80)とhttps(port 443)両方を受けるようにする。
  • http1のconfでhttpの場合httpsへリダイレクトする。
LoadModule rewrite_module modules/mod_rewrite.so # 略 LISTEN 80 LISTEN 443 # 略 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # 略

http2のconfでmod_rewriteLoadModuleされてますか?コメントになってたりしないでしょうか?
rewrite必須の場合は<ifModule mod_rewrite.c>は不要です。
※というか書いちゃダメです。書いてしまうとLoadModuleされてない場合単に無視して起動できてしまいエラーにならずに設定ミスなどの発見が遅れます。

#LoadModule rewrite_module modules/mod_rewrite.so ↓ LoadModule rewrite_module modules/mod_rewrite.so

http1はポート443のみをLISTEN
http2はポート80のみをLISTEN
としているのであれば、%{HTTPS}を検査する必要はありません。(httpのアクセスは来ないので)

http2のconf

htaccess

1#<ifModule mod_rewrite.c> 2RewriteEngine On 3# 不要 RewriteCond %{HTTPS} off 4RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 5#</ifModule>

投稿2019/12/12 01:54

編集2019/12/12 04:16
Y.H.

総合スコア7914

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

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

A.S9999

2019/12/12 02:46

回答ありがとうございます。 LoadModuleはコメントアウトされておりました。 また、不要な記述をコメントアウトしてもうまくリダイレクトできませんでした。 いくつか試したのですが、 http2 のhttp.conf にListen8081へ、 http1 のhttp.conf にListen80 、http.confにIncludeしているhttpd-ssl.conf 内をListen443 に設定した場合は、 http://test_server.com/HTML1/index.html → https://test_server.com/HTML1/index.html これがうまくいきます。 8081ポートのポートは許可されていない環境となるため、 実現したいのは、 http2 のhttp.conf にListen80へ、 http1 のhttp.conf にListen80をコメントアウトし 、http.confにIncludeしているhttpd-ssl.conf 内をListen443 に設定 となります。 この場合のリダイレクトはhttpでのアクセスは80ポートでhttp2と判断されるため、難しいのでしょうか?
Y.H.

2019/12/12 02:55 編集

最終的には http1 は、https (LISTEN 443)のみ https://www.example.com/ http2 は、http (LISTEN 80)のみ http://www.example.com/ ということですよね? http2のconfで以下を行うことでリダイレクトできませんか? ・LoadModule rewrite_module modules/mod_rewrite.so ・RewriteEngine On RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ※回答記載のホストが↑と齟齬があるので修正しておきます。
A.S9999

2019/12/12 03:27

ありがとうございます! httpd2.conf にリダイレクトの記載をすることで、 実現したい動きにできました。 http で来たら80ポートで来るので、http2のconfが読み込まれることになるので、こちらにリダイレクトを書けばよかったんですね。 ありがとうございます。 勉強になりました。
Y.H.

2019/12/12 03:31

そうです:-P
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問