2017-12-18 503 views
0

我试图使用Nginx设置反向代理,它也会为后端服务提供https。Docker-compose + Nginx SSL反向代理

我有3个容器,一个用于mongodb,一个用于我的.NET核心后端应用程序和一个用于反向代理。

码头集装箱似乎运作良好,直到香港专业教育学院设置HTTPS它运作良好。

问题是,来自https://localhost:8080的请求未正确转换为在http端口上运行的.NET核心应用程序。

问题出在我的Nginx配置文件中,但我不知道如何解决它。

worker_processes 1; 

events { worker_connections 1024; } 

http { 

    sendfile on; 

    upstream web { 
     server web:443; 
    } 

    server { 
     listen 8080; 

     location /upstream { 
      proxy_pass   https://web; 
      proxy_ssl_certificate  /etc/nginx/cert.pem; 
      proxy_ssl_certificate_key /etc/nginx/privkey.pem; 
      proxy_ssl_session_reuse on; 
      proxy_redirect  off; 
      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-Host $server_name; 
     } 
    } 

    server { 
     listen 443 ssl; 

     ssl_certificate_key /etc/nginx/privkey.pem; 
     ssl_client_certificate /etc/nginx/cert.pem; 
     ssl_verify_client  off; 

     location/{ 
      proxy_pass http://web; 
     } 
    } 
} 

当我这样做的HTTP请求,生病用https://localhost:8080时,它会返回ERR_SSL_PROTOCOL_ERROR拿回502网关错误。

在终端中,nginx的容器返回

enter image description here

任何想法?

+0

你是什么意思'没有正确翻译?哦 - 你可能会尝试添加'X-Forwarded-Proto',你的应用程序需要相信它..也许相关:https://forums.iis.net/t/1178094.aspx?Rewriting+HTTPS+variable+based+ on + value + of + X + Forwarded + Proto – gusto2

+0

如果有帮助,你可以试试这个:https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion – Evis

回答

0

阅读了一下后,文档我找到了解决方案。

worker_processes 1; 

events { worker_connections 1024; } 

http { 

    sendfile on; 

    upstream web { 
     server web:80; 
    } 

    server { 
     listen 8080 ssl; 

     ssl_certificate   /etc/nginx/cert.pem; 
     ssl_certificate_key  /etc/nginx/privkey.pem; 

     location/{ 
      proxy_pass   http://web; 
      proxy_redirect  off; 
      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-Host $server_name; 
      proxy_set_header X-NginX-Proxy true; 
     } 
    } 
}