我有一个网站(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
在同一个域中配置多个端口?
默认.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>
端口.conf:
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
答案1
编辑:调试用户设置,发现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 中已经有一个重复的 Listen for 至少 1996,将其取出。 (不,它正在被另一个正在运行的服务使用)
第二个注意事项:不要使用您可能在其他正在运行的服务上配置的端口。