基于SSL的Nginx上的OSRM

我用nginx设置了OSRM(开源路由机器)。 它的工作原理是这样的。 但是,问题是我不能让它在ssl上工作。 我已经设置了端口443,通过Nginx的站点与https一起工作,一切都很好,只是OSRM服务,或者如何调用它,这是在Ubuntu机器上运行,它不起作用。 当我访问/位置的页面说:

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; } } 

用你当前的configurationssl部分在nginx服务器上终止。

以下内容包括您需要的额外configuration。

 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发送上行stream量。 文档
proxy_ssl_certificate定义应该用于sslstream量的证书。 文档
proxy_ssl_certificate_key定义所使用的证书的私钥。 文档

它是固定的。 我刚换掉:

  proxy_pass http://osrm/; 

有:

 proxy_pass localhost:5000;