HTTP / HTTPS proxy sunucusu olarak Nginx nasıl kullanılır? [kapalı]


16

Nginx'i HTTP / HTTPS proxy'si olarak kullanmak mümkün müdür?

Yanıtlar:


14

Bazı testlerden sonra, benim için aşağıdaki yapılandırmayı buldum .

server {
  server_name ~^(www\.)?(?<domain>.+)$;
  access_log /var/log/nginx/proxy.access.log main;
  error_log /var/log/nginx/proxy.error.log crit;
  listen 10.255.1.13:8080;
  resolver 8.8.8.8;
  location / {
    proxy_pass http://$domain;
    proxy_redirect off;
    proxy_set_header Host $host;
    # Optional headers 
    # proxy_set_header X-Real-IP $remote_addr;
    # proxy_set_header X-Forwarded-For
    # $proxy_add_x_forwarded_for;
  }
}

Bu yapılandırma HTTPS için değil, yalnızca HTTP için çalışır.


4
Aferin! Birkaç ipucu. 1: listen ... default_server. 2: server_name ""veya server_name _. 2: proxy_pass $scheme://$http_host. Sınırlamalar: sadece port 80 ile yukarı akışlara zehirlenme; kendi kendine yönlendirmeleri işlemez.
Alexander Azarov

$ düzeni sadece hayalet https'de de dinliyorsa yararlıdır - ancak daha sonra orta risklerde ve https sertifika hatalarında mücadele etmek için adamınız varsa ... her ikisi de dikkate alınması gereken büyük güvenlik sorunlarıdır
anthonysomerset

8

kısa cevap hayır bence, ileri proxy için yazılmadı

GÜNCELLEME

Yukarıdaki ifademi netleştirmek için:

NGINX hiçbir zaman ileri proxy göz önünde bulundurularak yazılmamıştır - yapılandırmayı yapmak istediğiniz şeyi yapmak için bir şekilde jerry'yi uzaktan yapmak mümkün olsa da, aşağıdaki sınırlamaları anlamanız gerekir:

  • Önbellek desteği neredeyse var değil (proxy kullanmanın ana nedenlerinden biri)
  • Bağlantı noktası 80 trafiği dışında herhangi bir şey için kullanamazsınız (yani içinden cpanel kutularına giriş yok)
  • SSL tabanlı trafik için destek yok
  • Standart proxy üstbilgileri ve http önbellek üstbilgileri için destek yok (benim anlayışım bunların geçtiği
  • Proxy sunucularını destekleyen diğer protokolleri desteklemez - örn. VPN vb.

Şu anda bilinmeyen olası diğer hususlar:

  • Proxy'nizi hassas erişim kontrolü / kimlik doğrulaması için gerçek bir yetenek olarak yapmak mümkün (nginx'in farklı erişim kontrolü yöntemleri için desteği var, ancak bunun ileri proxy bağlamında nasıl davranabileceği belirsiz)
  • Nginx'in kurulu olduğu makine için olası güvenlik riskleri, çünkü çalışmak için tasarlanmadığı bir şekilde kullanılması nedeniyle dikkate alınmayan olası güvenlik delikleri olabilir

Karşı örnek, bakınız: ef.gy/using-nginx-as-a-proxy-server
kkurian

belki de cevabım ileri proxy yapmak için tasarlanmamıştı daha açık olmalı - maymun yama çabaları standart olmayan (port 80) portlara proxy talepleri gibi tam proxy desteği sunmayacak
anhonysomerset

3

Bir HTTP / HTTPS proxy kullanmak istiyorsanız, Squid kullanmalısınız. Tam olarak bunu yapmak için yazılmıştır. Nginx, ters vekil ve yük dengeleyici olarak hareket etti, ancak ileri bir vekil olarak yazılmadı.


Kalamar / ayy / tiniproksi / vb. Ben sadece akademik soru uğruna bu soruyu soruyorum
vlad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.