API-шлюз, использующий nginx в качестве обратного прокси - PullRequest
0 голосов
/ 08 мая 2019

У меня есть две службы (WMS и WFS) в контейнерах Docker.Я хочу иметь nginx в качестве шлюза, и у меня есть конфигурация, как показано ниже - сейчас не работает.

Нужно ли использовать set $upstream backend_server или proxy_pass baskend_server?

Как сделать рабочую конфигурацию дляперечисленные ниже случаи?

Первый случай

URL шлюза

http://project_test.local/wms?
SERVICE=WMS&
REQUEST=GetCapabilities&
VERSION=1.3.0

Прокси-сервер для URL

http://wms_server:8080/project_test/service?
SERVICE=WMS&
REQUEST=GetCapabilities&
VERSION=1.3.0

Второй регистр

URL шлюза

http://project_test.local/wfs?
SERVICE=WFS&
REQUEST=GetCapabilities&
VERSION=2.0.0

Прокси для URL

http://wfs_server:8080/ows?
MAP=project_test&
SERVICE=WFS&
REQUEST=GetCapabilities&
VERSION=2.0.0

Содержимое conf-файлов

backends.conf

upstream server_wms {
    server wms_server:8080;
}
upstream server_wfs {
    server wfs_server:8080;
}

proxy.conf

proxy_http_version  1.1;
proxy_cache_bypass  $http_upgrade;

proxy_set_header Upgrade            $http_upgrade;
proxy_set_header Connection         "upgrade";
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-Proto  $scheme;
proxy_set_header X-Forwarded-Host   $host;
proxy_set_header X-Forwarded-Port   $server_port;

project_test.conf

server {
    listen 0.0.0.0:8080;
    server_name project_test.local;
    access_log /var/logs/nginx/project_test_access.log;
    error_log /var/logs/nginx/project_test_error.log;

    location /wms {
        include proxy.conf
        proxy_pass http://wms_server:8080;
        proxy_redirect off;
        rewrite ^/service$request_uri /wms$request_uri
    }

    location /wfs {
        set $upstream server_wfs;
        rewrite ^/ows/?MAP=project_test$request_uri /project_test/wfs last;
    }
}
...