如何在同一域中為多個埠配置“https”?
我有一個網站(apache web 伺服器,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
在同一個域中配置多個埠?預設配置:
<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>
埠.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 的虛擬主機,請不要使用它):
<VirtualHost *:443 *:1980> Servername example.com .... </VirtualHost>
編輯配置文件後,您必須重新啟動 Apache。在 Debian/Ubuntu 中,它會重新啟動:
sudo service apache2 restart
使用 Listen 指定協議
對於大多數配置,Listen 的可選的第二個協議參數不是必需的。如果未指定,https 是埠 443 的預設值,http 是所有其他埠的預設值。該協議用於確定應由哪個模組處理請求,並使用 AcceptFilter 指令應用特定於協議的優化。
如果您在非標準埠上執行,您只需要設置協議。例如,在埠 8443 上執行 https 站點:
聽 192.170.2.1:8443 https
重要提示: 每個埠只能配置一個監聽線路/指令。如果您已經有這些埠的 Listen 指令,您可以評論它們或在它們前面添加 https。否則,在啟動 Apache 時,您將有一個“地址已在使用中”。
最後一段的 TLDR:你已經在 apache2.conf 中複製了至少 1996 年的副本,將其取出。(不,它正在被另一個正在執行的服務使用)
**第二個注意事項:**不要使用您可能在其他正在執行的服務上配置的埠。