【发布时间】:2019-02-20 23:57:48
【问题描述】:
我打算在一个主机上托管三个网站,我们称之为 raspi-dev:
home.redacted.ca、brew.redacted.ca、www.redacted.ca(或 redacted.ca)
为了实现这一点,我正在使用一个在端口 80 上接受传入连接的容器。这是反向代理配置的 sn-p:
server {
server_name brew.redacted.ca;
listen 80;
location / {
proxy_pass http://brewweb;
}
}
brewweb 是一个名为 brewweb 的容器。通讯工作至今。当导航到 http://brew.redacted.ca 时,我得到了我所期望的:
"GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Firefox/60.0" "-"
关键是将流量重定向到https。这是来自其他网络服务器的代码:
server {
listen 80;
server_name brew.redacted.ca;
return 301 https://brew.redacted.ca$request_uri;
}
server {
server_name brew.redacted.ca;
root /var/www/brew;
listen 443 ssl;
location / {
try_files $uri $uri/ /index.html =404;
}
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
}
所以它按预期工作。您转到http://brew.redacted.ca,它会告诉您返回端口 443。但是,在浏览器中,我得到一个死链接:“无法连接”。我现在的假设是,这是因为我的反向代理(它是主机网络上唯一侦听的容器)无法接收并转发未来的 443 请求。不过,我对如何处理这个问题有点不知所措..我是否获得了反向代理的证书???我怎么会这样做,因为它本身甚至没有提供任何内容..
我愿意接受所有建议。
【问题讨论】:
标签: docker ssl nginx reverse-proxy