如何配置 Nginx SSL 在 443 已被其他进程占用时工作?

How to configure Nginx SSL to work while 443 is already taken by other process?

我正在尝试设置一个有两个网站的服务器,一个是我的 Angular+Spring 启动服务器,另一个是 BTCPay 服务器。每个都有不同的域名。
在 BTCPay 服务器中,设置了这些环境变量:

export BTCPAY_HOST="btcpay.YourDomain.com"
export NBITCOIN_NETWORK="mainnet"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_CRYPTO2="ltc"
export BTCPAYGEN_REVERSEPROXY="nginx"
export BTCPAYGEN_LIGHTNING="clightning"

简而言之,443端口已经被BTCPay服务器占用,这个进程我几乎没有配置

起初,我认为这没什么大不了的,我只需要将我的另一台服务器放在另一个端口 1880 用于 HTTP 和 3443 用于 HTTPS 即可。但是切换端口后,Letsencrypt证书无法通过任何验证,浏览器都开始给我警告:

The certificate is not trusted because it is self-signed.
 
Error code: MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT

根据其他一些网上资源,使用Nginx的SSL连接必须使用443来验证证书,所以我的合法证书没有正确验证,这是导致问题的原因。
有人可以帮我解决这个问题吗?
有没有办法通过编辑 Nginx 配置来完成验证过程?

官方文档其实已经有了这个问题的解决方案,虽然对我来说还不够清楚:BTCPay Server Document,在Can I use an existing Nginx server as a reverse proxy with SSL 终止? 部分。
配置现有的 Nginx 配置文件,以在其中添加新的服务器部分。改完之后又出现了新的问题:
Port 80 already taken: 这是因为目前BTCPay Server docker正在尝试使用80作为传入端口,所以环境变量REVERSEPROXY_HTTP_PORT(反向代理绑定到 HTTP 流量的 public 端口(默认值:80))需要更改。我改成了1880,所以在Nginx的配置文件中,proxy_pass http://127.0.0.1:10080;需要改成: proxy_pass http://127.0.0.1:1880;

此更改后,大多数问题都解决了,但是当我尝试访问 https://www.example.com 时,它 响应错误代码 503.
这是因为 BTCPAY_HOST 环境变量已设置为 "example.com".为了解决这个问题,我选择在 Nginx 配置文件的服务器中分离 "www.example.com""example.com"部分,所以 https://www.example.com 将被重定向到 https://example.com.

在此之后,服务器同时为原始服务器和 BTCPay 服务器工作,希望这能帮助其他遇到同样问题的人:D