如何在同一个端口上同时使用HTTP和HTTPS?

3
我很不了解http和这个主题,所以找不到足够解答我的问题的答案。如果您已经找到关于这个问题的答案,请告诉我是否重复了。
我想要实现的目标是,通常情况下它可以在 http://domain:3000 上工作,但我希望它可以在 https://domain:3000 上使用。
我安装了Let's Encrypt并在我的Apache设置文件中添加反向代理设置。因此,可以通过路径访问 https://domain/api 来访问https://domain:3000。但是,正如我上面提到的那样,我也希望在https上直接使用端口号。
我的httpd.conf上还有其他行。
NameVirtualHost *:80
<VirtualHost *:80>
     ServerName my.domain
     ServerAlias www.my.domain *.my.domain
     DocumentRoot /var/www/html
     RewriteEngine on
     RewriteCond %{SERVER_NAME} =my.domain [OR]
     RewriteCond %{SERVER_NAME} =www.my.domain [OR]
     RewriteCond %{SERVER_NAME} =*.my.domain
     RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<IfModule mod_ssl.c>
     Listen 443
</IfModule>
Include /etc/httpd/conf/httpd-le-ssl.conf

<IfModule mod_proxy.c>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass /api http://my.domain:3000
    ProxyPassReverse /api http://my.domain:3000
</IfModule>

我需要增加更多的设置吗?还是有其他解决方法?


抱歉,但是您想要做什么以及您实际遇到的问题还不太清楚。 - arkascha
我只想知道是否有可能在相同的端口上使用https。例如,使(http://)example.com:3000和(https://)example.com:3000都成为可能。 - sophiedophie
简单明了的答案:通过 http 服务器本身无法在同一端口上同时运行 http 和 https 协议。 - arkascha
不确定Apache Httpd是否有解决方案,但对于Nginx,有一个解决方案,请参见https://serverfault.com/a/930789/333190。 - cyberbrain
1个回答

0
最好配置您使用不同的端口进行 SSL 连接的应用程序,例如端口 3001,并通过 HTTPS 将请求转发到该端口或直接访问它。

有使用不同端口的原因吗? - sophiedophie
因为它们是两种不同的协议,工作方式也不同),但如果您想同时使用安全和非安全连接,这是有意义的。如果您只想通过安全连接访问应用程序,则可以仅配置一个端口。 - Elvis Plesky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接