如何在同一域中为多个端口配置“https”?

如何在同一域中为多个端口配置“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在同一个域中配置多个端口?

默认.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

Apache - 绑定到地址和端口

使用 Listen 指定协议

对于大多数配置来说,可选的第二个协议参数 Listen 不是必需的。如果未指定,则 https 是端口 443 的默认值,http 是所有其他端口的默认值。该协议用于确定哪个模块应处理请求,并使用 AcceptFilter 指令应用特定于协议的优化。

仅当在非标准端口上运行时才需要设置协议。例如,在端口 8443 上运行 https 站点:

收听 192.170.2.1:8443 https

重要的提示: 每个端口只能配置一个监听线路/指令。如果您已经有这些端口的 Listen 指令,您可以对它们进行注释或在它们前面添加 https。否则,启动 Apache 时将会出现“地址已在使用中”

最后一段的 TLDR:您可能在 apache2.conf 中已经有一个重复的 Listen for 至少 1996,将其取出。 (不,它正在被另一个正在运行的服务使用)

第二个注意事项:不要使用您可能在其他正在运行的服务上配置的端口。

相关内容