07.06.2023

Ubuntu Server 22.04'te Nginx Kullanarak Ters Proxy Nasıl Yapılandırılır

Giriş

Ters proxy, bir uygulama sunucusunun internete erişmesi için etkili bir yöntemdir. Node.js veya Flask, TCP kullanarak yerel ağdaki uygulamaya erişim sağlar. Uygulamaya uzaktan erişmek için bir ters proxy sunucusu dağıtmanız gerekir. İlk olarak, istemci uygulamaya erişim talep eder ve istemcinin gereksinimine göre gerekli ayarlar olmadan sunucudan içerik alır. Bu kılavuzda, Nginx'i kolayca yapılandırabilecek ve istenen istemci isteklerini yeniden yönlendirebileceksiniz. Uygulamaları test etmek için bir sunucunuz mu eksik? Hiç sorun değil. Bir Gunicorn WSGI sunucusunda bir test uygulaması kurmayı düşünün.

Kurulum için hazırlık

Ubuntu Server 22.04'ü web sitemizdeki yönergelere göre yapılandırmanız gerekir

Bu kılavuzda sunucu adresi ip_adresi olarak adlandırılacaktır. Örneğin, http://127.0.0.1:8000 Gunicorn kütüphanesi için standart adrestir. Kurulu bir test uygulama sunucunuz yoksa, sunucuyu sağlayan Gunicorn'u dağıtabilirsiniz.

Nginx kullanarak bir alan adı ayarlayabilirsiniz, alan adı ile erişildiğinde web tarayıcısı istenen adrese bağlanır.

Aşama 1 - Nginx'i indirin ve kurun

İlk olarak, yazılım paketi dizinlerini güncelleyin ve nginx paketini yükleyin:

apt update
apt install nginx

"y" seçeneğini seçin ve paketi yükleyin. Yükleme sırasında "E: Sub-process /usr/bin/dpkg bir hata kodu döndürdü (1)" ile ilgili hatalar oluşabilir.

Dosyayı açın ve IPv6 ile ilgili satırı yorumlayın, değişiklikleri kaydedin ve dosyadan çıkın:

vim /etc/nginx/sites-available/default
#listen [::]:80 default_server; # comment out the line and exit with ESC and :wq! By saving the file.

Kurulum paketini doğru şekilde yapılandırmak için komutu çalıştırın:

dpkg --configure -a

Komutu çalıştırarak yardımcı programın işlevselliğini kontrol edin:

service nginx status

Ufw ile Nginx bağlantı kuralına izin verin:

ufw allow ‘Nginx HTTP’

Bir sonraki adımda, sunucu tarafını yapılandıracağız ve yapılandırmayı test edeceğiz.

Aşama 2 - Sunucu tarafı yapılandırması

etc/nginx/sites-available dizininde, etki alanımızın adını içeren bir dosya oluşturun:

vim /etc/nginx/sites-available/test_domain.ru;

Ardından dosyaya bir kod parçası ekleyin ve test_domain.ru ve ip_addres_app adreslerini kendi adresinizle değiştirin. Uygulamaları test etmek için bir sunucu yoksa http://127.0.0.1:8000 ile değiştirin - bu adres varsayılan Gunicorn adresidir. üçüncü adımda ele alacağız.

server {
listen 80;
listen [::]:80; #if an error occurs during nginx -t check, comment out the line+
server_name test_domain.ru
www.test_domain.ru;
location / {
proxy_pass http://127.0.0.1:8000;
include proxy_params;
}
}

ESC ve :wq komutlarını çalıştırarak kaydedin ve çıkın!

Yapılandırma varsayılan olarak 80 numaralı bağlantı noktasını dinlemeye başlar ve test_domain.ru isteklerine yanıt verir. Ters proxy, /etc/nginx/proxy_params dizinindeki proxy_params dosyası kullanılarak yapılandırılır.

HTTP istekleri, IP adresi ve çerezler hakkında bilgi içeren başlıklardan oluşur. Proxy_params dosyası önerilen parametreleri içerir:

proxy_set_header Host $http_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;

scheme, kaynak ana bilgisayar tarafından bağlanmak için kullanılan protokolü içeren bir dizedir. test_domain.ru dosyasına sembolik bir bağlantı oluşturun:

ln -s /etc/nginx/sites-available/test_domain.ru /etc/nginx/sites-enabled/

nginx'i -t anahtarı ile test edelim:

nginx -t

Hizmeti yeniden başlatalım:

service nginx restart

Şu anda, Nginx bir ters proxy ile yapılandırılmıştır. Bir sonraki adım uygulama test sunucusunu kurmak ve yapılandırmaktır.

Aşama 3 - Gunicorn ile ters proxy testi

Nginx web sunucusunu başlattıktan sonra, adres çubuğunda alan adını belirterek bir web tarayıcısı kullanarak çalışabilirliği kontrol edebilirsiniz.

Bir Python WSGI sunucusu olan ve Nginx ters proxy ile sürekli çalışan Gunicorn paketini indirin ve kurun:

apt install gunicorn

Python sanal ortamına bağlanabilen en son sürüm için Gunicorn'u doğrudan "pip" aracılığıyla kurmak mümkündür.

"Yeni WSGI sunucusu" döndüren bir fonksiyon yazalım. Bir dosya oluşturalım:

vim wsgi.py

Bir kod parçası ekleyelim:

def wsgi(environ, start_response):
start_response("200 OK", [])
return iter([b"Welcome, to new wsgi server"])

Gunicorn sunucusunu başlatalım, uzantısız dosya adını ve fonksiyonun adını belirleyelim:

gunicorn --workers=2 wsgi:wsgi
#Output
[2022-11-10 18:47:16 +0000] [2633] [INFO] Starting gunicorn 20.1.0
[2022-11-10 18:47:16 +0000] [2633] [INFO] Listening at: http://127.0.0.1:8000 (2633)
[2022-11-10 18:47:16 +0000] [2633] [INFO] Using worker: sync
[2022-11-10 18:47:16 +0000] [2634] [INFO] Booting worker with pid: 2634
[2022-11-10 18:47:16 +0000] [2635] [INFO] Booting worker with pid: 2635

Bir tarayıcı açın ve http://127.0.0.1:8000 adresine girin ve bir mesaj alın.

Sonuçlar

Bu kılavuz ile öğrendikleriniz: