【发布时间】:2018-05-31 20:18:45
【问题描述】:
我正在尝试使用 Nginx 设置反向代理,该代理也将为后端服务提供 https。
我有 3 个容器,一个用于 mongodb,一个用于我的 .NET 核心后端应用程序,一个用于反向代理。
Docker 容器似乎运行良好,在我设置 HTTPS 之前它运行良好。
问题是来自https://localhost:8080 的请求未正确转换为在 http 端口上运行的 .NET 核心应用程序。
问题出在我的 Nginx conf 文件中,但我不确定如何解决。
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 请求时,我会返回 502 Bad gateway 错误,当使用 https://localhost:8080 时它会返回 ERR_SSL_PROTOCOL_ERROR。
在终端,nginx容器返回
有什么想法吗?
【问题讨论】:
-
are not translated properly是什么意思?哦 - 您可以尝试添加X-Forwarded-Proto并且您的应用程序需要信任它.. 可能相关:forums.iis.net/t/… -
如果有帮助,你可以试试这个:github.com/evertramos/…
标签: ssl nginx proxy docker-compose