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 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:
#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:
Komutu çalıştırarak yardımcı programın işlevselliğini kontrol edin:
Ufw ile Nginx bağlantı kuralına izin verin:
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:
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.
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 X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
- http_host - istemci tarafından talep edilen ilk ana bilgisayarı içerir, bu da web sitesi etki alanı ve bağlantı noktasıdır;
- remote_addr - başlık her zaman uzak ana bilgisayara ait bir IP adresi içerir;
- proxy_add_x_forwarded_for - isteği gönderen ana bilgisayarın IP adresini içerir. IP adreslerinin bir listesini kaydetmek de mümkündür. Birincisi ana bilgisayarın kaynak IP adresidir, ardından isteğin geçtiği ters proxy sunucularının tüm IP adreslerinin bir listesi gelir.
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:
nginx'i -t anahtarı ile test edelim:
Hizmeti yeniden başlatalım:
Ş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:
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:
Bir kod parçası ekleyelim:
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:
[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:
- Nginx ve Gunicorn nasıl kurulur;
- bir Nginx HTTP kuralı ekleyin;
- Uygulamayı test etmek için sunucu kısmını kurun;
- sembolik bağlantılar oluşturun;
- Uygulamayı test etmek için sunucuyu başlatın.