У меня есть сценарий, состоящий из контейнеров Docker внешнего и внутреннего интерфейсов и другого контейнера для обратного прокси-сервера nginx.
В настоящее время конфигурация nginx указывает URL http://example.com на внешний контейнер и http://example.com/backend на внутренний контейнер.
Теперь мне нужно настроить nginx, чтобы он мог также распознавать вызовы http://backend.example.com и перенаправлять их в бэкэнд-контейнер.
Как мне добиться этого, если имя сервера, которое используется в конфигурации nginx, является localhost?
server {
listen 80 default_server;
server_name localhost;
if ($http_x_forwarded_proto = 'http') {
return 301 https://$host$request_uri;
}
location /backend/ {
proxy_pass http://backend:3000/;
}
location / {
proxy_pass http://frontend:3000/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Я тоже пытался добавить этот блок, но он не работал (на самом деле все перестало работать):
server {
listen 80 default_server;
server_name backend.localhost;
if ($http_x_forwarded_proto = 'http') {
return 301 https://$host$request_uri;
}
location / {
proxy_pass http://backend:3000/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}