У меня есть две службы (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;
}
}