Czy można używać Nginx jako serwera proxy HTTP / HTTPS?
16
Po kilku testach stwierdziłem, że działa dla mnie następująca konfiguracja.
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;
}
}
Ta konfiguracja działa tylko dla HTTP, a nie dla HTTPS.
listen ... default_server
. 2:server_name ""
lubserver_name _
. 2:proxy_pass $scheme://$http_host
. Ograniczenia: odkurzanie do potoków tylko z portem 80; nie przetwarza przekierowań.myślę, że krótka odpowiedź brzmi „nie”, nie została napisana z myślą o przekazywaniu dalej
AKTUALIZACJA
aby wyjaśnić moje stwierdzenie powyżej:
NGINX nigdy nie został napisany z myślą o przekazywaniu danych do przodu - chociaż zdalnie możliwe jest, aby jakoś jerrigować konfigurację, aby zrobić to, co chcesz, musisz zrozumieć następujące ograniczenia:
Możliwe inne kwestie, które są obecnie nieznane:
źródło
Jeśli chcesz korzystać z proxy HTTP / HTTPS, powinieneś użyć Squid. Zostało napisane, aby zrobić dokładnie to. Nginx został napisany tak, aby działał jako odwrotny serwer proxy i moduł równoważenia obciążenia, ale nie jako proxy proxy.
źródło