我已经使用 nginx 设置了 OSRM(开源路由机)。它按预期工作。但是,问题是我无法让它通过 ssl 工作。我已经设置了端口 443,nginx 上的站点使用 https 工作,一切都很好,只是 OSRM 服务(或者我如何称呼它),它在 ubuntu 机器上运行,它不起作用。当我访问 /location 时,页面显示:
400 错误请求
普通 HTTP 请求已发送到 HTTPS 端口
这是我的 osrm.config 文件:
upstream osrm {
# commented out server 0.0.0.0:5000;
server 0.0.0.0:443;
}
server {
listen 443;
ssl on;
ssl_certificate /my/valid/path/working;
ssl_certificate_key /my/valid/path/working;
server_name my_server_sub_domain_is_here;
location /mypath {
proxy_pass http://osrm/;
proxy_set_header Host $http_host;
}
}
答案1
使用您当前的配置,ssl 部分在 nginx 服务器上终止。
下面包括您需要的额外配置。
upstream osrm {
# commented out server 0.0.0.0:5000;
server 0.0.0.0:443;
}
server {
listen 443;
ssl on;
ssl_certificate /my/valid/path/working;
ssl_certificate_key /my/valid/path/working;
server_name my_server_sub_domain_is_here;
proxy_ssl on;
proxy_ssl_certificate /etc/ssl/certs/backend.crt;
proxy_ssl_certificate_key /etc/ssl/certs/backend.key;
location /mypath {
proxy_pass http://osrm/;
proxy_set_header Host $http_host;
}
我添加的部分执行以下操作
proxy_ssl
告诉 Nginx 通过 ssl 发送上行流量。文档
proxy_ssl_certificate
定义应该用于 SSL 流量的证书。文档
proxy_ssl_certificate_key
定义所使用的证书的私钥。文档
答案2
已经修复。我刚刚替换了:
proxy_pass http://osrm/;
和:
proxy_pass localhost:5000;