通过 SSL 在 Nginx 上进行 OSRM

通过 SSL 在 Nginx 上进行 OSRM

我已经使用 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;

相关内容