我有一个网站(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 的进程:所以配置示例,改为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
以下行:您还必须在相应的虚拟主机中定义端口:
它也鲜为人知,您可以执行以下操作(仅作为示例,如果您仍然拥有使用 :*443 的虚拟主机,请不要使用它):
编辑配置文件后,您必须重新启动 Apache。在 Debian/Ubuntu 中,它会重新启动:
从Apache - 绑定到地址和端口
重要提示: 每个端口只能配置一个监听线路/指令。如果您已经有这些端口的 Listen 指令,您可以评论它们或在它们前面添加 https。否则,在启动 Apache 时,您将有一个“地址已在使用中”。
最后一段的 TLDR:你已经有一个重复的 至少 1996 年在可能的 apache2.conf 中,把它拿出来。(不,它正在被另一个正在运行的服务使用)
第二个注意事项:不要使用您可能在其他正在运行的服务上配置的端口。