Kaydol

Merhaba Sevgili Floodlar.com Kullanıcısı, Web sitemizde geçirdiğiniz zaman ve bu büyüleyici flood evrenine katılımınız için teşekkür ederiz. Floodların geniş dünyasıyla dolu deneyiminizi daha fazla keşfetmek için, web sitemizi sınırsız olarak kullanabilmeniz adına giriş yapmanız gerekmektedir.

Oturum aç

Merhaba Floodlar.com Kullanıcısı, İlk üç sayfayı tamamladınız, tebrikler! Ancak, floodların devamını görmek ve daha fazla interaktif deneyim yaşamak için giriş yapmanız gerekiyor. Hesabınız yoksa, hızlıca oluşturabilirsiniz. Sınırsız floodlar ve etkileşimler sizleri bekliyor. Giriş yapmayı unutmayın!

Şifremi hatırlamıyorum

Şifreniz mi unuttunuz? Endişelenmeyin! Lütfen kayıtlı e-posta adresinizi giriniz. Size bir bağlantı göndereceğiz ve bu link üzerinden yeni bir şifre oluşturabileceksiniz.

Fil Necati Masonlar Locası Subreddit Adı Nedir? Cevap: ( N31 )

Üzgünüz, flood girme izniniz yok, Flood girmek için giriş yapmalısınız.

Lütfen bu Floodun neden bildirilmesi gerektiğini düşündüğünüzü kısaca açıklayın.

Lütfen bu cevabın neden bildirilmesi gerektiğini kısaca açıklayın.

Lütfen bu kullanıcının neden rapor edilmesi gerektiğini düşündüğünüzü kısaca açıklayın.

Mobil Uygulamada Açın

Güncel Floodlar En sonuncu Nesne

Docker’da NGINX Ters Proxy Nasıl Dağıtılır?

Docker’da NGINX Ters Proxy Nasıl Dağıtılır?

Ters proxy, gelen istekleri yakalar ve bunları uygun sunucuya yönlendirir. Bu sadece performansı hızlandırmakla kalmaz, aynı zamanda sunucu güvenliğini de güçlendirir.

Ters proxy’leri kurmanın ve yönetmenin en kolay yolu Nginx ve Docker kullanmaktır. Bu kılavuz, Docker kapsayıcıları içinde iki örnek web hizmeti ve bu hizmetler için bir Nginx ters proxy kurar.

Bu öğreticide, iki örnek web sunucusu için Docker’da ters proxy’yi nasıl kuracağınızı öğreneceksiniz.

Docker'da Nginx ters proxy'si dağıtın.

Önkoşullar

  • olan bir kullanıcı hesabı sudo ayrıcalıklar
  • Bir komut satırı/terminal penceresi (Ctrl-Alt-T)
  • Docker sisteminizde yüklü
  • Docker Compose sisteminizde yüklü
  • İlişkili bir SSL Sertifikasına sahip kayıtlı bir alan adı

Neden Ters Proxy’ye İhtiyacınız Var?

Standart proxy sunucusu istemcileri korurken, ters proxy sunucusu sunucuyu korur.

Ters proxy, özel ağın güvenlik duvarının arkasında kurulan bir proxy türüdür. Birincil rolü, trafiği durdurmak ve arka uçtaki uygun sunucuya bir istek yönlendirmektir.

Ters proxy kullanmanın ana nedenleri, güvenlik Ve verim. Birden çok bölmede çalışan hizmetleriniz varsa, ağa gelen tüm istekleri belirli sayıda bağlantı noktasından geçecek şekilde yönlendirebilirsiniz.

Ek olarak, ters proxy’ler SSL şifrelemesini, önbelleğe almayı ve verileri sıkıştırmayı da işleyebilir.

1. Adım: Örnek Bir Web Hizmeti Oluşturun

1. İlk örnek web hizmeti için yeni bir dizin oluşturarak başlayın. Bu eğitimde bir dizin oluşturuyoruz. example1ancak istediğiniz bir adı kullanabilirsiniz.

mkdir example1

2. Bu dizine gidin:

cd example1

3. Hizmeti tanımlayan ilk kapsayıcı için bir docker-compose YAML yapılandırma dosyası oluşturun. Seçtiğiniz bir metin düzenleyici kullanın (bu örnekte Nano kullanıyoruz).

sudo nano docker-compose.yml

4. Ardından, .yaml dosyasına aşağıdaki içeriği ekleyin:

version: '2'
services:
 app:
  image: nginx
  volumes:
   - .:/usr/share/nginx/html
  ports:
   - "80"

docker-compose dosyası bunun bir uygulama kullanan hizmet nginx görüntü. Kökünü bağlar örnek 1 Docker ana bilgisayarından /usr/share/nginx/html/. Son olarak, yapılandırma, hizmeti bağlantı noktasında gösterir. 80.

bu docker-compose.yml Dosya, çalıştırmak istediğiniz hizmete bağlı olarak değişir. Yukarıdaki yapılandırma, bu eğitim için oluşturduğumuz web hizmetine özeldir.

Not: Bu örnek bir hizmet olduğu için nginx görüntüsünün sürüm numarasını eklemedik. Ancak bir üretim ortamında sürümü de belirttiğinizden emin olun.

4. Dosyayı kaydedin ve çıkın.

5. İçerideyken örnek 1 dizin, web hizmeti için bir dizin dosyası oluşturun:

sudo nano index.html

6. Örnek web sayfasında görünmesi için birkaç basit satır ekleyin:

<!DOCTYPE html>
<html>
<head>
<title>Website 1</title>
</head>
<body>
<h1>Hello! This is the first sample website.</h1>
</body>
</html>

7. Dosyayı kaydedip kapatın.

8. Yeni oluşturulan hizmeti kullanarak oluşturun. docker-compose emretmek:

sudo docker-compose build

Bu örnekte olduğu gibi önceden oluşturulmuş bir görüntü kullanıyorsanız, çıktı şu şekilde yanıt verir: uygulama bir resim kullanıyor, atlıyor.

Çıktı gösteriliyor "uygulama bir resim kullanıyor, atlıyor".

9. Ardından, kabı şununla başlatın:

sudo docker-compose up -d
docker-compose kullanarak ilk web hizmeti için bir kapsayıcı başlatın.

2. Adım: İkinci Bir Örnek Web Hizmeti Oluşturun

Aynı işlemi takip ederek ikinci bir örnek web servisi oluşturun.

Hâlâ içindeyseniz ana dizine döndüğünüzden emin olun. örnek 1. Bunu yapmak için çalıştırın cd terminal penceresinde.

1. İkinci web sitesi için docker-compose ve dizin dosyasını depolayacağınız yeni bir dizin oluşturun. Bu dizine isim vereceğiz. örnek2.

mkdir example2

2. Taşın örnek2 koşarak:

cd example2

3. Bir docker-compose dosyası oluşturun:

sudo nano docker-compose.yml

4. 1. Adımdakiyle aynı belirtimleri kullanarak hizmeti tanımlayın. Aşağıdaki içeriği dosyaya ekleyin:

version: '2'
services:
 app:
  image: nginx
  volumes:
   - .:/usr/share/nginx/html
  ports:
   - "80"

5. Dosyayı kaydedin ve çıkın.

6. Ardından, aşağıdakileri çalıştırarak ikinci web hizmeti için bir dizin dosyası oluşturun:

sudo nano index.html

7. Dosyaya içerik ekleyin:

<!DOCTYPE html>
<html>
<head>
<title>Website 2</title>
</head>
<body>
<h1>Hello! This is the second sample website.</h1>
</body>
</html>

8. Değişiklikleri kaydedin ve dosyadan çıkın.

9. İkinci hizmeti oluşturun ve aşağıdaki komutları çalıştırarak kapsayıcıyı başlatın:

sudo docker-compose build
sudo docker-compose up -d
Docker kapsayıcısı içinde bir web hizmeti çalıştırın.

3. Adım: Konteynerleri Listeleyin

Her iki hizmet için kapsayıcıların çalışır durumda olduğunu doğrulamak için tüm kapları şu komutla listeleyin:

docker ps -a

Çıktıda listelenen her iki web hizmeti için kapsayıcıları görmelisiniz.

Web hizmetlerine sahip iki kapsayıcınız olduğunu doğrulamak için tüm Docker kapsayıcılarını listeleyin.

4. Adım: Ters Proxy’yi kurun

Ardından, bir ters proxy kapsayıcısı kurmanız ve yapılandırmanız gerekir. Bu, tümü içinde saklanması gereken birden çok dosya ve alt dizin oluşturmayı gerektirir. vekil dizin.

Bu nedenle, ilk adım oluşturmak ve içinde gezinmektir. vekil dizin. Bunu yapmak için komutları çalıştırın:

mkdir proxy
cd proxy

Dockerfile’ı yapılandırın

1. İçeri girdikten sonra vekil dizini, yeni bir özel görüntü için bir Dockerfile oluşturun:

sudo nano Dockerfile

2. Dosya aşağıdakileri içermelidir:

FROM nginx

COPY ./default.conf /etc/nginx/conf.d/default.conf

COPY ./backend-not-found.html /var/www/html/backend-not-found.html

COPY ./includes/ /etc/nginx/includes/

COPY ./ssl/ /etc/ssl/certs/nginx/

Dockerfile, nginx görüntüsünü temel alır. Ayrıca yerel makineden bir dizi dosya kopyalar:

  • proxy hizmeti için varsayılan yapılandırma
  • bir HTML hata yanıtı
  • proxy ve SSL yapılandırmaları ve sertifikaları

3. Kaydedin ve Dockerfile’dan çıkın.

Arka uç bulunamadı Dosyasını yapılandırın

için bir indeks dosyası oluşturun. bulunamadı cevap:

sudo nano backend-not-found.html

İçeriği ekleyin:

<html>
<head><title>Proxy Backend Not Found</title></head>
<body>
<h2>Proxy Backend Not Found</h2>
</body>
</html>

3. Değişiklikleri kaydedin ve dosyayı kapatın.

default.conf Dosyasını Yapılandırın

1. Oluşturun default.conf proxy dizini içindeki dosya:

sudo nano default.conf

2. İçeriği ekleyin:

# web service1 config.
server {
listen 80;
listen 443 ssl http2;
server_name example1.test;

# Path for SSL config/key/certificate
ssl_certificate /etc/ssl/certs/nginx/example1.crt;
ssl_certificate_key /etc/ssl/certs/nginx/example1.key;
include /etc/nginx/includes/ssl.conf;

location / {
include /etc/nginx/includes/proxy.conf;
proxy_pass http://example_app_1;
}

access_log off;
error_log /var/log/nginx/error.log error;
}

# web service2 config.
server {
listen 80;
listen 443 ssl http2;
server_name example2.test;

# Path for SSL config/key/certificate
ssl_certificate /etc/ssl/certs/nginx/example2.crt;
ssl_certificate_key /etc/ssl/certs/nginx/example2.key;
include /etc/nginx/includes/ssl.conf;

location / {
include /etc/nginx/includes/proxy.conf;
proxy_pass http://example2_app_1;
}

access_log off;
error_log /var/log/nginx/error.log error;
}

# Default
server {
listen 80 default_server;

server_name _;
root /var/www/html;

charset UTF-8;

error_page 404 /backend-not-found.html;
location = /backend-not-found.html {
allow all;
}
location / {
return 404;
}

access_log off;
log_not_found off;
error_log /var/log/nginx/error.log error;
}

Yapılandırma iki web hizmetinden oluşur – örnek1.test Ve örnek2.test. Her iki sunucu bileşeni de 80 numaralı bağlantı noktasını dinler ve Nginx’i uygun SSL sertifikasına yönlendirir.

docker-compose.yml Dosyasını Yapılandırma

1. Yeni bir tane oluşturun docker-compose.yml proxy hizmeti için dosya:

sudo nano docker-compose.yml

2. Aşağıdaki içeriği kopyalayıp dosyaya yapıştırın:

version: '2'
services:
proxy:
build: ./
networks:
- example1
- example2
ports:
- 80:80
- 443:443

networks:
example1:
external:
name: example1_default
example2:
external:
name: example2_default

Bu dosyada, proxy ve harici ağları (web servisleri) bağlarsınız. örnek 1 Ve örnek2). Ayrıca, proxy hizmetinin 80/443 numaralı bağlantı noktaları, Docker ana bilgisayarının 80/443 numaralı bağlantı noktalarına bağlıdır.

Anahtarlar ve Sertifikalar Oluşturun

1. Bir alt dizin oluşturarak başlayın (ssl) içinde vekil dosya:

mkdir ssl

2. Şuraya gidin: ssl ile alt dizin:

cd ssl

3. Ardından, gerekli dosyaları oluşturmak için aşağıda listelenen her bir dokunmatik komutu çalıştırın:

touch example1.crt
touch example1.key
touch example2.crt
touch example2.key

4. Ardından, web hizmetleriniz için anahtarlar ve sertifikalar oluşturmak üzere OpenSSL’yi kullanın. İlk web hizmeti için (örnek 1), komutu çalıştırın:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example1.key -out example1.crt

Komut, 2048 bitlik bir RSA özel anahtarı oluşturur ve bunu örnek1.anahtar dosya.

NGINX ters proxy'yi başlatmadan önce web hizmetleriniz için anahtarlar ve sertifikalar oluşturun.

Sertifika talebine dahil edilen bazı bilgileri de sağlamanız istenecektir. Bazı alanları boş bırakabilirsiniz.

5. İkinci web hizmeti için anahtarlar ve sertifikalar oluşturmak üzere işlemi tekrarlayın (örnek2). Terminal penceresinde aşağıdaki komutu yazın:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example2.key -out example2.crt

Bu, 2048 bitlik bir RSA özel anahtarı oluşturur. örnek2 ve onu şuraya kaydeder: örnek2.anahtar dosya.

Proxy ve SSL Yapılandırmasını Düzenleyin

1. Şuradan çıkın: ssl alt dizini ve içine geri vekil. Bunu yapmak için şu komutu kullanın:

cd ..

2. Ardından, adı altında yeni bir alt dizin oluşturun. içerir:

mkdir includes

3. Şuraya gidin: içerir ve dosyaları oluştur proxy.conf Ve ssl.conf:

cd includes
touch proxy.conf
touch ssl.conf

4. Ardından, proxy.conf dosya:

sudo nano proxy.conf

5. Aşağıdaki yapılandırmayı ekleyin:

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-Proto $scheme;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_intercept_errors on;

6. Kaydet ve çık proxy.conf.

7. ssl.conf dosyasını açın:

sudo nano ssl.conf

8. Aşağıdaki satırları dosyaya yapıştırın:

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-
ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-
SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-
GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-
AES128-SHAECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-
SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:
DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-
DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:
AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-
CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

Ana bilgisayar dosyasını düzenleyin

1. Geri dön vekil dizin:

cd

2. /etc/hosts dosya:

sudo nano etc/hosts

3. Web hizmetlerinin ana bilgisayar adlarını Docker ana bilgisayarlarının özel IP adresine eşlemek için aşağıdaki satırları ekleyin:

10.0.2.15 example1.test
10.0.2.15 example2.test

4. Değişiklikleri kaydedin ve dosyayı kapatın.

5. Adım: Ters Proxy’yi Başlatın

1. Yapılandırma dosyaları yerindeyken, kapsayıcıyı oluşturmak için docker-compose komutunu kullanın:

sudo docker-compose build
Ters proxy kapsayıcısı oluşturun.

2. Ardından kabı çalıştırın:

sudo docker-compose up -d
Bir ters proxy kapsayıcısı çalıştırın.

3. Üç kapsayıcınız olduğunu bildiğinizi doğrulayın – iki web hizmeti ve bir ters proxy kapsayıcısı:

sudo docker ps -a
İki web hizmetiniz ve bir ters proxy kapsayıcınız olduğunu doğrulayın.

6. Adım: Ters Proxy’nin Çalışıp Çalışmadığını Kontrol Edin

Kullan curl web servislerinin ve ters proxy’nin düzgün çalışıp çalışmadığını kontrol etmek için komut. Her etki alanı uygun çıktıyla yanıt vermelidir.

1. İlk web hizmetini kontrol etmek için aşağıdaki komutu çalıştırın:

sudo curl example1.test

Çıktı, için oluşturulan HTML ile yanıt verir. örnek1.test.

2. Ardından, ikinci web hizmetinin aşağıdakilerle ters proxy ile çalıştığını doğrulayın:

sudo curl example2.test

Çıkış şu şekilde yanıt verir: örnek2.test HTML.

Çözüm

Bu öğretici, size iki örnek web hizmeti ve onlar için bir Nginx ters proxy’si ayarlamak için Docker’ı nasıl kullanacağınızı gösterdi.

Docker ortamı dışında Nginx ters proxy hakkında daha fazla bilgi edinmek istiyorsanız, NGINX’i Ters Proxy Olarak Kurma ve Kullanma konusuna bakın.

İlgili Mesajlar

Yorum eklemek için giriş yapmalısınız.