Имеется такой вот конфиг nginx:
server {
listen 80;
server_name server.ru;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
server_name server.ru;
set $owncloud_container owncloud;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
location /cloud {
resolver 127.0.0.11;
proxy_pass https://$owncloud_container;
proxy_redirect off;
client_max_body_size 0;
}
location / {
root /www;
index index.html
try_files $uri $uri/ =404;
}
}
Таким образом я настраиваю owncloud внутри контейнера docker. nginx тоже под docker, но видит контейнер owncloud через общую сеть.
Как только я пытаюсь обратиться к адресу
https://server.ru/cloud, броузер тут же получает редирект на
https://owncloud/cloud и естественно ничего не открывает. При этом все остальные адреса работают изумительно:
https://server.ru/cloud/https://server.ru/cloud/index.phpНе понимаю, откуда вылезает это перенаправление, что я не учел?
P.S. Owncloud, кстати, внутри контейнера не знает такого названия хоста (owncloud), во всех конфигах прописан server.ru и именно так он себя идентифицирует. Так что это именно nginx делает такой редирект.
Пользователь добавил сообщение 24 Июня 2018, 19:55:01:
Надо было добавить
proxy_set_header Host $host;
Оттуда Owncloud вытаскивал название своего контейнера. По-умолчанию этот заголовок заполняется, как $proxy_host.