Wpis z mikrobloga

Hej,
ustawiłem w końcu reverse proxy na nginx, ale mam problem
wewnątrz pliku konfiguracyjnego mam taką linię

server {
listen 443 ssl;
server_name gitlab.roman.pl;

location / {
proxy_pass http://gitlab;
}
}

proxy_pass wskazuje na kontener dockera, który musi istnieć ponieważ próba restartu nginx bez włączonego kontenera gitlaba powoduje błąd.

2020/03/24 06:44:59 [emerg] 392#392: host not found in upstream "gitlab" in /etc/nginx/conf.d/default.conf:174
nginx: [emerg] host not found in upstream "gitlab" in /etc/nginx/conf.d/default.conf:174
nginx: configuration file /etc/nginx/nginx.conf test failed

W jaki sposób mógłbym to zmienić, aby nie wyrzucało błędu tylko np. przekierowywało na stronę 404?

#docker #webdev #nginx
  • 5
  • Odpowiedz
@qarmin: na stacku piszą, że można rozwiązać używając opcji "resolver" w sekcji "location", więc pewnie w ten sposób musiałbyś zmienić config. Miałem podobny problem, ale nie testowałem tego rozwiązania.

location / {
resolver 127.0.0.11 valid=30s; # docker DNS
set $upstream_bar gitlab;
proxy_pass http://$upstream_bar:80;
}

https://stackoverflow.com/a/54719226/2047778
  • Odpowiedz
@qarmin: udało Ci się zrobić, że mając jedną domene XYZ za pomocą ngingxa masz subdomena1.XYZ, subdomena2.XYZ? Podziel się configiem albo linkami, bo ja w sumie ciągle lece na różnych portach, ale chętnie bym się przeniósł na subdomeny
  • Odpowiedz
@qarmin: nie wiem czy rozwiązałeś, ale nginx przy takim zapisie resolvuje DNS przy starcie, aby to poprawić musisz użyć zapisu jak podaje @Zajc: wtedy dns nie jest keszowany na starcie
  • Odpowiedz