我对 http 和这个主题几乎一无所知,所以找不到足以解决我的问题的答案。如果这个问题重复并且您已经找到了答案,请告诉我。
我想要实现的目标
通常它与 http://domain:3000 一起工作但我想让 https://domain:3000 可以访问它.
我做了什么
我安装了 let's encrypt 并在我的 apache 设置文件中添加了反向代理设置。所以可以访问 https://domain:3000使用诸如 https://domain/api 之类的路径但正如我上面提到的,我也想直接在 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>
我需要添加更多设置吗?或任何其他方式来解决这个问题?
最佳答案
最好配置您必须使用不同端口进行 SSL 连接的应用程序,例如3001并通过HTTPS转发请求到该端口或直接访问
关于apache - http和https如何使用相同的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50596703/