20 Ocak 2021 Çarşamba

NGINX - nginx.conf Dosyası - HTTP proxy

Giriş
NGINX kendisine gelen istekleri bir başka adrese yönlendirir (forward). Yani sunucularımız önüne koyduğumuz ve kendisine gelen istekleri sunucularımıza yönlendiren reverse proxy olarak çalışır.

upstream kavramı
Reverse proxy kullanırken bazen karşımıza upstream kelimesi çıkar. Açıklaması şöyle. Yani upstream ile kendi sunucumuz kastediliyor.
In the context of a reverse proxy server, an upstream server is a server that the reverse proxy forwards requests to. The upstream server can be any server that can handle the request, such as a web server, application server, or microservice.
server_name Alanı
server_name ile Nginx'in dinleyeceği adres belirtilir. Bu adresin altına açılan location XXX şeklindeki alanlarla server_name için gelen isteklerin nereye yönlendirileceği belirtilir. proxy_pass ile yönlendirilecek adres belirtilir.

Böylece hem Reverse Proxy, hem de Forward Proxy olarak görev yapabilir.

Örnek - forward proxy
Şöyle yaparız
server {
  listen 81;

  location / {
    resolver 8.8.8.8;
    proxy_http_version 1.1;
    proxy_pass https://$host$request_uri;
  }
}
Örnek - reverse proxy
Aynı birden fazla virtual server çalışıyorsa şöyle yaparız.
server {
  server_name device1.example.com;
  location / {
    proxy_pass http://192.168.0.1:80;
  }
}
server {
  server_name device2.example.com;
  location / {
    proxy_pass http://192.168.0.2:80;
  }
}
server {
  server_name device3.example.com;
  location / {
    proxy_pass http://192.168.0.3:80;
  }
}
Örnek - reverse proxy
Şöyle yaparız. Burada niçin proxy_set_header  alanlarını atamak lazım bir gün öğrenirsem yazarım.
worker_processes 1;

events { worker_connections 1024; }

http {

    sendfile on;

    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-Host $server_name;
    proxy_set_header   X-Forwarded-Port $server_port;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   X-Forwarded-Prefix $contextpath;
    proxy_set_header   X-Request-Id $pid-$msec-$remote_addr-$request_length;

    server {
        listen 8080;

        resolver 127.0.0.11 valid=30s;

        location /messaging {
            set $upstream messaging-api;
            set $contextpath /messaging;

            client_max_body_size 50M;
            rewrite            ^/messaging(/|$)(.*) /$2 break;
            proxy_pass         http://$upstream:8080;
            proxy_redirect     off;
        }
    }
}
Örnek - reverse proxy + url rewrite
Şöyle yaparız. Burada "rewrite ^/lekana(.*)$ $1 break;" ile url içindeki lekana siliniyor.
server {
    listen          80;
    server_name     bassa.com www.bassa.com;

    location / {
        proxy_pass http://bassa-api:7656;
    }

    location /lekana {
        rewrite ^/lekana(.*)$ $1 break;
        proxy_pass http://lekana-api:7654;
    }

    location /siddhi {
        rewrite ^/siddhi(.*)$ $1 break;
        proxy_pass http://siddhi-api:7655;
    }
}

Hiç yorum yok:

Yorum Gönder