我有一台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.com到https://192.168.200.18
的流量答案 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;
}
}