Nginx反向代理https到https

时间:2020-02-29 18:27:15

标签: ssl nginx

我有一台QNAP TS-253A,其管理界面暴露于互联网。

qnap通过专用工具安装了自己的证书(即,我不知道该证书的确切位置)。

https://mydomain.myqnapcloud.com指向我的静态IP,并且我的路由器具有防火墙规则,该规则将端口443转发到192.168.200.6,这是QNAP的内部地址。

一切正常。

现在,我在192.168.200.18上启动了一个Docker容器,我想将其公开给https://identity.someotherdomain.com

我的想法是使用Nginx反向代理(192.168.200.8)启动另一个容器,并将防火墙规则更改为将443(和80)转发到反向代理。

有很多指南,可以使用nginx坐在http服务器前面并添加SSL证书,从而将现有的http网站转换为https。但是我的用例应该更简单,因为我转发到的服务器已经是https。

我已经尝试过了,这行不通:

upstream qnap {
  server        192.168.200.6:443;
}

server {
  listen        192.168.200.8:443;
  server_name   mydomainmyqnapcloud.com;

  location / {
    proxy_pass  https://qnap;
  }
}

如何配置nginx将原本https://mydomain.myqnapcloud.com的流量转发到https://192.168.200.6 和从https://identity.someotherdomain.comhttps://192.168.200.18

的流量

1 个答案:

答案 0 :(得分:0)

我完成此工作的方法是在Qnap上找到证书和密钥(在/ etc / stunnel中),并将它们复制到共享到反向代理docker映像的文件夹中,并将它们包括在nginx.conf中:

server {
  listen 443 ssl;
  server_name mydomain.myqnapcloud.com;
  ssl_certificate /etc/ssl/private/backup.cert;
  ssl_certificate_key /etc/ssl/private/backup.key;
  ssl_session_cache builtin:1000 shared:SSL:10m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
  ssl_prefer_server_ciphers on;
  access_log /var/log/nginx/access.log;
  location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass https://192.168.200.6;
    proxy_read_timeout 90;
    proxy_redirect https://192.168.200.6 https://mydomain.myqnapcloud.com;
  }
}