Я установил OSRM (машину маршрутизации с открытым исходным кодом) с nginx. Работает как положено. Но проблема в том, что я не могу заставить его работать через ssl. Я установил порты 443, сайт поверх nginx работает с https, все в порядке, только служба OSRM или как ее назвать, которая работает на машине ubuntu, она не работает. Страница, когда я захожу в / location, говорит:
ошибка 400, неверный запрос
На порт HTTPS был отправлен простой HTTP-запрос.
Вот мой файл 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;
}
}
С вашей текущей конфигурацией часть 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
Определяет закрытый ключ для используемого сертификата. документы
Это было исправлено. Я просто заменил:
proxy_pass http://osrm/;
с участием:
proxy_pass localhost:5000;