Nginx를 HTTP / HTTPS 프록시 서버로 사용하는 방법은 무엇입니까? [닫은]


답변:


14

일부 testings를 후, 나는 발견 한 나를 위해 일하는 다음과 같은 구성을.

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;
  }
}

이 구성은 HTTPS가 아닌 HTTP에 대해서만 작동합니다.


4
잘 했어! 몇 가지 힌트. 1 : listen ... default_server. 2 : server_name ""또는 server_name _. 2 : proxy_pass $scheme://$http_host. 제한 사항 : 포트 80만으로 업스트림에 poxying; 리디렉션 자체를 처리하지 않습니다.
Alexander Azarov

$ scheme은 가상 호스트가 https를 수신하는 경우에만 유용합니다. 그러나 중간 위험에
처한

8

짧은 대답은 아니오라고 생각합니다. 정방향 프록시 용으로 작성되지 않았습니다.

최신 정보

위의 진술을 명확히하기 위해 :

NGINX는 포워드 프록 싱을 염두에두고 작성되지 않았습니다. 원격으로 구성을 원하는 방식으로 구성 할 수 있지만 다음과 같은 제한 사항을 이해해야합니다.

  • 거의 존재하지 않는 캐시 지원 (프록시를 사용하는 주요 이유 중 하나)
  • 포트 80 트래픽 이외의 용도로 사용할 수 없음 (즉, cpanel 박스에 로그인하지 않음)
  • SSL 기반 트래픽을 지원하지 않습니다
  • 표준 프록시 헤더 및 http 캐시 헤더를 지원하지 않습니다.
  • 프록시 서버를 지원하는 다른 프로토콜 (예 : VPN 등)은 지원하지 않습니다.

현재 알려지지 않은 다른 고려 사항 :

  • 세분화 된 액세스 제어 / 인증을 실제로 수행 할 수있는 능력이 없어 프록시를 수행 할 수 있음
  • nginx가 설치되어있는 머신에 보안 위험이 발생할 수 있습니다.


어쩌면 내 대답은 프록시를 전달하도록 설계되지 않았 음을 분명히해야합니다. 원숭이 패치 노력은 비표준 (포트 80) 포트에 대한 프록시 요청과 같은 완전한 프록시 지원을 제공하지 않습니다
anthonysomerset

3

HTTP / HTTPS 프록시를 사용하려면 Squid를 사용해야합니다. 정확히 그렇게하도록 작성되었습니다. Nginx는 역방향 프록시 및로드 밸런서로 작동하도록 작성되었지만 정방향 프록시로는 작동하지 않습니다.


나는 오징어 / oops / tinyproxy / etc에 대해 알고 있습니다. 나는 단지이 질문을 학문적 관심을 위해 요청합니다
vlad
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.