Nginx Bir Soru
-
merhaba,
nginx ile ilk kez static sunucu ayağa kaldırmaya çalışıyorum fakat bir sorum var.
localhost:3000'de çalışan sunucuyu reverse proxy yaptım ve ayağa kaldırınca dış ip ile hizmet vermeye başlıyor burada problem yok.site sorunsuz bir şekilde çalışıyor.
backend tarafında ise express'i localhost:5000 de ayağa kaldırıyorum fakat dbden datalar gelmiyor. eğer burayıda reverse proxy yaparsam ve dış ip ile istek atarsam dataları alabiliyorum.
bu işin olması gerekeni bu mudur? yani frontend de localhost:5000 ile dataları çekebilmem gerekmez mi? yoksa normal olan backend tarafınada dış ip ile mi istek atmak?
Veya ben, backend tarafına reverse proxy yapmak istemiyorum mesela. Bu işin mantığı nedir?şimdiden teşekkürler,
-
frontentend de ne kullaniyorsun haci?
frontend adi uzerinde onyuz oldugu icin clientta calisirken tabi ki localhost seklinde verilen adresten data cekemez.
abdullahazad tarafından 05/Haz/21 15:37 tarihinde düzenlenmiştir -
hocam tam setupını anlamadım ama ben de django için nginx + gunicornla biraz debelendikten sonra openlitespeedi keşfettim. inanılmaz rahatladım ya, 10 dk da ayağa kaldırdım her şeyi. docker imajı falan da var düzgün.
https://docs.litespeedtech.com/cloud/images/nodejs/
-
crystalmeth bunu yazdı
merhaba,
nginx ile ilk kez static sunucu ayağa kaldırmaya çalışıyorum fakat bir sorum var.
localhost:3000'de çalışan sunucuyu reverse proxy yaptım ve ayağa kaldırınca dış ip ile hizmet vermeye başlıyor burada problem yok.site sorunsuz bir şekilde çalışıyor.
backend tarafında ise express'i localhost:5000 de ayağa kaldırıyorum fakat dbden datalar gelmiyor. eğer burayıda reverse proxy yaparsam ve dış ip ile istek atarsam dataları alabiliyorum.
bu işin olması gerekeni bu mudur? yani frontend de localhost:5000 ile dataları çekebilmem gerekmez mi? yoksa normal olan backend tarafınada dış ip ile mi istek atmak?
Veya ben, backend tarafına reverse proxy yapmak istemiyorum mesela. Bu işin mantığı nedir?şimdiden teşekkürler,
Localhost kendi makinenen hocam. Dolayısıyla backend servisler makinenin üzerinde değilse erişemeyecektir.
Şöyle düşün: kullanıcı sitene giriyor, frontend uygulaması kullanıcının bilgisayarına yükleniyor. İsteği atacak olan o bilgisayar. Dolayısıyla localhost da o bilgisayarın kendisine istek atması demek. Kullanıcıya göre düşünmen gerekiyor. Bu kullanıcı iç networkden geliyorsa(yani internete kapalı intranete açık bir uygulamadan bahsediyorsak), iç network ip adresi kullanarak sunucuya istek atması gerekir. İnternet için de dış ip adresi tabiki.
-
@abdullahazad vuejs kullanıyorum hocam
@yolbulucu göz gezdiriyorum hocam teşekkürler
@herlocksholmes backend servislerim kendi makinemin üstünde ama hocam vuejs localhost:3000 ve backend expressjs localhost:5000 aynı makinenin üstünde koşuyor. örneğin windows ortamında da expressjs'i ayağa kaldırıyorum localhost:5000'den ayağa kalkıyor ve ben sadece localhost:5000/api/query'e istek atarak db den sorgumu yapıp responsemi alabiliyorum.
aynı mantığı linux nginx ortamında da bekledim. yada ben yanlış düşünüyorum.yani örneğin:
//bu istek evet reverse proxy yaparsam sunucuda çalışıyor axios.get("http://159.89.xxx.xxx:5000/api", { // bu istek hiç bir şekilde çalışmıyor axios.get("http://localhost:5000/api", {
fakat bu localhost isteğini ben windows ortamında yaparsam çalışıyor. yani frontend ile localhost:5000'e istek atarsam dönüş alabiliyorum. fark nedir? neyi yanlış düşünüyorum?
-
crystalmeth bunu yazdı
//bu istek evet reverse proxy yaparsam sunucuda çalışıyor axios.get("http://159.89.xxx.xxx:5000/api", { // bu istek hiç bir şekilde çalışmıyor axios.get("http://localhost:5000/api", {
fakat bu localhost isteğini ben windows ortamında yaparsam çalışıyor. yani frontend ile localhost:5000'e istek atarsam dönüş alabiliyorum. fark nedir? neyi yanlış düşünüyorum?
NGINX'e mülkünü tanıtman lazım, yani yayını 159.89'dan mı yoksa localhost'tan mı yoksa ::'dan mı yapacağını server bloğunda ayarlaman gerekiyor; benim aklıma gelen bu oldu açıkcası.
-
crystalmeth bunu yazdı
@abdullahazad vuejs kullanıyorum hocam
@yolbulucu göz gezdiriyorum hocam teşekkürler
@herlocksholmes backend servislerim kendi makinemin üstünde ama hocam vuejs localhost:3000 ve backend expressjs localhost:5000 aynı makinenin üstünde koşuyor. örneğin windows ortamında da expressjs'i ayağa kaldırıyorum localhost:5000'den ayağa kalkıyor ve ben sadece localhost:5000/api/query'e istek atarak db den sorgumu yapıp responsemi alabiliyorum.
aynı mantığı linux nginx ortamında da bekledim. yada ben yanlış düşünüyorum.yani örneğin:
//bu istek evet reverse proxy yaparsam sunucuda çalışıyor axios.get("http://159.89.xxx.xxx:5000/api", { // bu istek hiç bir şekilde çalışmıyor axios.get("http://localhost:5000/api", {
fakat bu localhost isteğini ben windows ortamında yaparsam çalışıyor. yani frontend ile localhost:5000'e istek atarsam dönüş alabiliyorum. fark nedir? neyi yanlış düşünüyorum?
ee hocam normal değil mi? :D server ile ayni ağdan istek atiyorsun tabi ki yanıt alırsın. :)
vue uzerinde kulandiğin api adresin localhost ise kullanamazsin hocam. cevap cok basit. ben sitene girdigimde o vue arayuzun js olarak benim browser'da caliscak. peki bu durumda ben senin localhost'a nasıl erisebilirim? senin sunucun ile ayni networkte olsam bile erisemem. localhost 127.0.0.1 e giden loopback adrestir.
api adresin icin mesela api.domain.com icin reserve proxy yarat ve localhost:5000 e pasla.
vue içinde de api adresi olarak api.domain.com ver. başka türlü çözebileceğini zannetmiyorum açıkcası :(
ha bunun icinde istersen extra header bilgileri ile guvenlik almaya calisabilirsin.
-
şimdi anladım tamam :D doğru. dışarıda çalışan client localhosta istek atarak nasıl çalışsın.
teşekkürler.. @abdullahazad @herlocksholmes