私はウェブサイト(Apacheウェブサーバー、ubuntu 14.04)のセットアップ http://example.com を持ち、ポート1996と1980で構成されています。
これらのリンクはhttp
で機能します
http://example.com/myproject
http://example.com:1996/
http://example.com:1980/
次に、SSL証明書をインストールし、https
を使用するようにこのサーバーを構成しました。
しかし、これらのリンクは機能しません
https://example.com:1996
https://example.com:1980
複数のポートの同じドメインでhttps
を構成するにはどうすればよいですか?
default.conf:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
ServerName example.com
SSLEngine on
SSLCertificateFile /home/ubuntu/ssl_cert/signed_cert.crt
SSLCertificateKeyFile /home/ubuntu/ssl_cert/server.key
</VirtualHost>
ports.conf:
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
編集:ユーザー設定のデバッグ、それはnetstat
で見つかりました1996/TCPを使用するプロセスがすでにあります:
netstat -nlp | grep 1996
tcp 0 0 0.0.0.0:1996 0.0.0.0:* LISTEN 4729/python
そのため、構成例は1997/TCPに変更されました。
Apache
/mod_ssl
は、1997/TCPおよび1980/TCPがHTTPSポートであることを通知する必要があります。デフォルトでは443/TCPはすでに認識されていますが、他のTLS対応TCPポートは構成に追加する必要があります。
そうでない場合、443/TCP以外のポートは、HTTP対応ポートとしてのみ処理されます。
たとえば、CentOSでは/etc/httpd/conf.d/ssl.conf
に、Debian/Ubuntuでは/etc/Apache2/ports.conf
に次の行を追加する必要があります。
Listen 1997 https
Listen 1980 https
また、対応する仮想ホストでポートを定義する必要があります。
<VirtualHost *:1997>
Servername example.com
....
</VirtualHost>
<VirtualHost *:1980>
Servername example.com
....
</VirtualHost>
それはあまり知られていません、次のようにすることができます(例としてのみ:: * 443を使用しているvhostがある場合は使用しないでください):
<VirtualHost *:443 *:1980>
Servername example.com
....
</VirtualHost>
設定ファイルを編集した後、Apacheを再起動する必要があります。 Debian/Ubuntuでは、次のように再起動されます。
Sudo service Apache2 restart
Listenでプロトコルを指定する
Listenのオプションの2番目のプロトコル引数は、ほとんどの構成では必要ありません。指定しない場合、httpsがポート443のデフォルトであり、httpが他のすべてのポートのデフォルトです。プロトコルは、どのモジュールが要求を処理するかを決定し、AcceptFilterディレクティブを使用してプロトコル固有の最適化を適用するために使用されます。
標準以外のポートで実行している場合にのみ、プロトコルを設定する必要があります。たとえば、ポート8443でhttpsサイトを実行します。
192.170.2.1:8443 httpsを聞く
重要な注意:ポートごとに1つのListen行/ディレクティブのみを構成する必要があります。これらのポートのListenディレクティブがすでにある場合は、コメントするか、その前にhttpsを追加します。そうしないと、Apacheの起動時に「アドレスはすでに使用中」になります。
前の段落のTLDR:おそらく、Apache2.confに少なくとも1996年のリッスンがすでに重複しています。それを削除してください。 (いいえ、それは別の実行中のサービスによって使用されています)
2番目の注意:他の実行中のサービスで構成した可能性のあるポートを使用しないでください。