私のサーバーには、CentOS 6.2とApacheを実行している複数のドメインがあります。サーバーにSSL証明書がインストールされ、正常に実行されています。
http://
プライマリドメインに移動するたびに、そのセクションを表示するためにドメインを追加しませんhttps
。
たとえば、
入力すると、代わりにページがmydomain.com
表示されます。https
private_html/index.html
public_html/index.html
入力http://mydomain.com
したりhttp://www.mydomain.com
正しいページが表示された場合public_html/index.html
入力https://mydomain.com
したりhttps://www.mydomain.com
正しいページが表示された場合private_html/index.html
問題は、http
orhttps
部分を省略すると常にその部分が出てくることですhttps
。私はその反対が欲しい。https
Apacheが行きたいときではなく、行きたいときに行きます。
原因は何ですか?
私のhttpd.conf
ドメイン名です
<VirtualHost 100.101.102.103:80 >
ServerName www.mysite.com
ServerAlias www.mysite.com mysite.com
ServerAdmin [email protected]
DocumentRoot /home/admin/domains/mysite.com/public_html
ScriptAlias /cgi-bin/ /home/admin/domains/mysite.com/public_html/cgi-bin/
UseCanonicalName OFF
<IfModule !mod_ruid2.c>
SuexecUserGroup admin admin
</IfModule>
<IfModule mod_ruid2.c>
RMode config
RUidGid admin admin
RGroups apache access
</IfModule>
CustomLog /var/log/httpd/domains/mysite.com.bytes bytes
CustomLog /var/log/httpd/domains/mysite.com.log combined
ErrorLog /var/log/httpd/domains/mysite.com.error.log
<Directory /home/admin/domains/mysite.com/public_html>
Options +Includes -Indexes
php_admin_flag safe_mode OFF
php_admin_flag engine ON
php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f [email protected]'
php_admin_value open_basedir /home/admin/:/tmp:/var/tmp:/usr/local/lib/php/
</Directory>
</VirtualHost>
<VirtualHost 100.101.102.103:443 >
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
ServerName www.mysite.com
ServerAlias www.mysite.com mysite.com
ServerAdmin [email protected]
DocumentRoot /home/admin/domains/mysite.com/private_html
ScriptAlias /cgi-bin/ /home/admin/domains/mysite.com/public_html/cgi-bin/
UseCanonicalName OFF
<IfModule !mod_ruid2.c>
SuexecUserGroup admin admin
</IfModule>
<IfModule mod_ruid2.c>
RMode config
RUidGid admin admin
RGroups apache access
</IfModule>
CustomLog /var/log/httpd/domains/mysite.com.bytes bytes
CustomLog /var/log/httpd/domains/mysite.com.log combined
ErrorLog /var/log/httpd/domains/mysite.com.error.log
<Directory /home/admin/domains/mysite.com/private_html>
Options +Includes -Indexes
php_admin_flag safe_mode OFF
php_admin_flag engine ON
php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f [email protected]'
php_admin_value open_basedir /home/admin/:/tmp:/var/tmp:/usr/local/lib/php/
</Directory>
</VirtualHost>
助けてくれてありがとう。ありがとうございます。
ベストアンサー1
ここはApacheとは何の関係もありません。 httpサービスとhttpsサービスは異なるポートにあり、ポートはTCP / IPヘッダーに割り当てられています。顧客別。 Apacheは、ランダムに選択せずに、特定のポートで行われた特定の要求に応答して実行する必要がある作業を実行します。
つまり、アドレスバーに直接入力してプロトコル(http、ftp、https...)を省略すると、Webクライアント(ブラウザ)はhttpsを選択します。サイト履歴がある場合、ブラウザは内部リストから一致するものを選択します。
これは、サイト内のリンクではなくアドレスバーに入力した場合にのみ発生しますが、サイトをレイアウトすることをお勧めします。冗長パスなし混乱を避けるために他のプロトコルとして使用します。同じドメイン名を引き続き使用できます。https://my.domain/secure/rest-of-path
パスの先頭()に「secure」を追加するだけです。 Apacheが提供するものがhttpsとhttpに対して同じでなければならない場合は、エンドユーザーとWebクライアントが見ることができるようにシンボリックリンクまたはmod_rewrite(私は適切だと思います。私はApacheの専門家ではありません)を使用します。これらのパスは異なります。 。
あなたできるhttpリクエストをhttpsポートにリダイレクトするか、逆にリダイレクトするようにApacheを設定します。しかし、実際にそれを行うかどうかがわかります。サーバーログでこれらのリダイレクトの証拠を見つけることもできますし、Wiresharkのトランザクションを見ると確実に見つけることができます。
HTTPトランザクションをデバッグして理解するには、Wiresharkを使用することをお勧めします。送信元ポートと宛先ポートは、トランスポート制御プロトコルの下にあります。これは受信者ではなく送信者によって設定されます。 80は通常httpと見なされ、443はhttpsと見なされます。どのポートでも非標準ポートを使用できますが、この場合、通常のネットワーククライアントは使用するポートを明示的に知らせる必要があります(たとえば、:NNN
アドレスを追加してhttps://my.domain:4040/path
)、サーバーは明示的にそのポートを提供するように設定する必要があります。土地もそう。