Nginx의 리버스 프록시 구성 (2 개)

  우리는 Nginx와는 역방향 프록시 개방의 nginx 프록시 캐싱, 검토를 참조 보안 체인의 이전 이야기 https://www.cnblogs.com/qiuhom-1874/p/12417130.html; 오늘 우리는 프록시, HTTP 프로토콜와 로직 RUI를 처리하지 않고 프록시 RUL을 사용하여 다음 nginx를 리버스 프록시에 큰 말을 반대로 nginx를 말을 계속해서 우리가이 전면 및 후면 끝이 동일 넣을 수 있습니다 계약은 동형 에이전트로 이해, 즉 프런트 엔드 사용자 액세스의 nginx HTTP 또는 HTTPS 액세스 백 엔드 서버에 프로토콜 프록시 서버 정말로 HTTP 프로토콜을 기반으로 서비스를 제공, 전면과 후면 끝 같은 프로토콜을 사용하고, 우리는 말 또한이 이는 동형이다 마찬가지로 균질 한 이성체는 서로 다른 프로토콜의 이성체가 전방 및 후방 단부에서 사용이 있고, 이러한 HTTP 또는 HTTPS 프로토콜 프록시 이성체라고 백엔드 서버를 사용하여 FastCGI 프로토콜로서 전단 사용자, 인터넷 사이트의 대부분은 많은 사이트의 모든 예를 들어, 사용자가 데이터 우리의 필요가 스크립트에 액세스하거나 프로그램의 실행 후 데이터가 다음 우리가 나중에 수행해야합니다, 자신의 응용 프로그램 서버가 순수한 정적 HTML 페이지 아니다 스크립트 서버 응용 프로그램 서버라고 그것은 많은 기능을 가지고있는 것처럼의 nginx 웹 서버,하지만 그는 그것을 실행하지 못했습니다 이러한 PHP 스크립트, 인기있는 이야기로이 스크립트 기능, Nginx에, 당신은 당신의 자신의 PHP 스크립트 (다른 ​​응용 프로그램 서버에 의존 할 필요를) 수행 할 수 없습니다 정적 텍스트를 처리 할 수 ​​있으며, 또한 동적으로 PHP 모듈을로드 할 수 있습니다 아파치, 아파치와 유사하다, 실행을 가질 수 순서대로,하지의 nginx 능력 PHP 스크립트는 이러한 기능을 달성하기 위해, nginx를 그가하는 FastCGI 프로토콜 자원이 백엔드 프록시 클라이언트를 처리 할 수있는 요청을 지원합니다; 물론 많은 그런 유사한 계약, SCGI을 거기에, uwsgi 등은, 같은 이 이기종 아키텍처, 그 원리는 우리가 백엔드 어플리케이션 서버로 사용자의 요청 브로커를 넣어하지 않는 경우이 클라이언트가 같은의 index.php 파일로, 리소스 스크립트를 요청하는 클라이언트 톱이다 데이터는 분명히 무리 인의 index.php를 스크립트의 내용에, 그것을 수행하는 방법? 일반적으로 우리의 nginx 서버 구성, 특정 사용자 액세스에 필요합니다.

  ngx_http_fastcgi_module :이 모듈의 구현은 사용자가 프록시 서버 FastCGI를 요청할 수 Nginx에

    1 fastcgi_pass 주소 : 주소 설정하는 FastCGI 서버는이 IP 어드레스는 포트의 형태로 첨가 될 수 있거나, 경로의 도메인 이름 또는 UNIX 도메인 소켓 일 수있다 위치 및 구성 부 위치에이 옵션을 사용할 수있다

  예

로컬 호스트 fastcgi_pass : 9000

  주 : 안티 - 기계 인터페이스를 대신하여 FastCGI 프로토콜 서비스 응답 9000에 의해 위의 구성 수단이;

fastcgi_pass 유닉스 : /tmp/fastcgi.socket;

  주 : 설정하는 FastCGI 주소를 나타내는 상술는 /tmp/fastcgi.socket 문서이고;

  2, fastcgi_index 이름, FastCGI를 이름을 제공하는 기본 홈 자원,이 명령은 HTTP, 서버, 위치 구성 섹션에서 사용할 수 있습니다

  3 fastcgi_param 파라미터 값 [if_not_empty] : 파라미터의 백엔드 서버 FastCGI를 값으로 통신 파라미터를 설정하는 것은 양자의 텍스트, 변수, 또는 이들의 조합 일 수있다.

  예

fastcgi_param SCRIPT_FILENAME / 홈 / www /에서 스크립트 / PHP는 $의 fastcgi_script_name;

  참고 : 위의 구성이 SCRIPT_FILENAME을 나타낸다는에 / 집 FastCGI를 서버에 전달 / www /에서 스크립트 / PHP는 $의 fastcgi_script_name, 사용자 요청의 $ fastcgi_script_name 표현 스크립트 이름과 동일, 다시 클라이언트로 실행되는 스크립트를 넣어 FastCGI를 서버를 말할 평균 (여기 클라이언트는 일반적으로) 프록시 서버를 말한다

fastcgi_param QUERY_STRING $ QUERY_STRING;

  팁 : 우리는 결과의 구현이 다른 것, 스크립트는 다른 매개 변수를 전달 알고 위의 구성 저장 및 백 엔드 서버 FastCGI를 전달 스크립트 변수 QUERY_STRING의 요청의 매개 변수를 나타냅니다, 그것은 QUERY_STRING 저장, 스크립트를 실행하자 값이 스크립트에 매개 변수로 전달됩니다 우리는 불편 열한 많이 쓴 백 엔드에 제공하는 것을 물론, 가능성이 구성 파일에 기록에서 11 아니라, nginx를 구성 디렉토리에있는 파일의 nginx에 전문 스토리지가 가변 백 엔드 서버에 대응하는 변수는,이 구성 fastcgi.conf 프로필 FastCGI를 우리는 우리가 일반적으로 서버 FastCGI를 통해 FastCGI를 변수에 변수로 Nginx의 도입을 정의 할 필요가 지정 파일을 포함한다;

  예

위치 ~ * \ .PHP $ { 
	루트는 / usr / share /의 nginx / html로; 
	fastcgi_pass 127.0.0.1:9000; 
	fastcgi_index의 index.php를; 
	fastcgi_param SCRIPT_FILENAME는 / usr / share /의 nginx / html로 $ fastcgi_script_name; 
	fastcgi_params을 포함한다; 
}

  참고 : 장치에 127.0.0.1:9000 포트를하는 FastCGI 프로토콜 프록시에 의해 .PHP에서 사용자의 끝, 그것은이 처리 될 경우 URI는, URI는 (실행) 사용자에 맞게 위의 구성 방법, 기본 홈 페이지 FastCGI를 서버 자원의 index.php라는 하고 말했다 FastCGI를 서버는 / usr / 공유 / 사용자 스크립트에 의해 요청 된 리소스를 찾을 수의 nginx / html로 / 아래, 다른 매개 변수 및 설명 변수의 정의 / 등은 /의 nginx / fastcgi_params의 사용에 전달할 수있는 경우는 nginx를 보유 상기 구성은 프록시 서버의 nginx 응답 PHP는 동적 시나리오 클라이언트 요청으로 사용될 수와 백엔드 서버 FastCGI를로 전달되는 값은, 위에서, 항 세대 동적 PHP 페이지의 구성 예이고;

[루트 @ WWW의 nginx] #의 정력 /etc/nginx/conf.d/proxy.conf의 
  


서버 { 

        서버 _ www.test.com; 

        proxy_cache proxy_cache는; 
# proxy_cache_key $ REQUEST_URI; 
# proxy_cache_methods는 HEAD를 GET; 
        (200) (302)를 15m proxy_cache_valid; 
        404 1m를 proxy_cache_valid; 
# proxy_cache_use_stale HTTP_500 http_502; 
        위치 / EN / 문서 / { 
                proxy_pass http://nginx.org; 
        } 
        위치 ~ * /(.*).php$ { 
                루트 / 응용 프로그램 / php_scripts; 
                fastcgi_pass 127.0.0.1:9000; 
                fastcgi_index의 index.php를;
                fastcgi_param SCRIPT_FILENAME은 / 응용 프로그램 / php_scripts $ fastcgi_script_name을; 
                은 / etc / nginx를 / fastcgi_params을 포함한다; 
        } 
} 
~                                                                                                                                                                           
~                                                                                                                                                                           
~                                                                                                                                                                          
~                                                                                                                                                                           
~                                                                                                                                                                           
~                                                                                                                                                                          
~                                                                                                                                                                           
~                                                                                                                                                                           
~                                                                                                                                                                           
~                                                                                                                                                                          
~                                                                                                                                                                           
~                                                                                                                                                                           
~                                                                                                                                                                          
~                                                                                                                                                                           
~                                                                                                                                                                          
~                                                                                                                                                                           
~                                                                                                                                                                          
~                                                                                                                                                                           
~                                                                                                                                                                           
~                                                                                                                                                                          
~                                                                                                                                                                          
~                                                                                                                                                                           
~                                                                                                                                                                           
"conf.d / proxy.conf"23L, 500C 기록 
[루트 @ WWW의 nginx] #의 nginx -t 
의 nginx : 구성 파일 /etc/nginx/nginx.conf 구문은 확인 
의 nginx : 구성 파일을 / etc / nginx를 / nginx.conf 테스트에 성공 
[루트 @ WWW의 nginx] #에서 mkdir / 응용 프로그램 / php_scripts -p 
[루트 @ WWW의 nginx] # 고양이 >> /app/php_scripts/test.php 
<PHP? 
        은 phpinfo (); 
?> 
^ C 
[루트 @ WWW의 nginx] # 고양이 / 응용 프로그램 / php_scripts / 테스트. PHP 
<PHP? 
        은 phpinfo (); 
?> 
[루트 @ WWW의 nginx] #의 nginx -s 재 장전 
[루트 @ WWW의 nginx] #

  팁 : 설치 후, PHP-FPM를 설치하려면 위 필요성을 구성하기 전에 당신은 일반적으로 사용자가 시작되는 프런트 엔드 프록시에 따라, 사용자 및 그룹에 /etc/php-fpm.d/www.conf 변경해야 우리는 백 엔드 사용자 캔을 시작, 우리는 프런트 엔드 에이전트가 nginx에, nginx를 여기에 구성 저장, 이러한 변경 이후로 변경해야 할 수 있습니다 다음 다시 시작 PHP-FPM은, 당신은이 기계 127.0.0.1로 볼 수 있습니다 : 9000 청취 상태에, 위의 구성 수단 안티 대신 127.0.01에 .PHP 자원 끝나는 사용자가 요구하는 것을 : 처리 9000, 명확하고, 백엔드 FastCGI를 홈 리소스 이름이 index.php를 백 엔드 응용 프로그램 서버 루트를 보여 경로 / 응용 프로그램 / php_scripts, fastcgi_param의 SCRIPT_FILENAME / 응용 프로그램 / URI가 액세스 할 디스크의 해당 경로, 디렉토리 FastCGI를 그것을 작동하는 백엔드 서버의 해당하는 사용자가 지정한 루트 별칭 명령의 nginx와 $ fastcgi_script_name 역할은 동일 php_scripts;

  팁 : 우리는 PHP-FPM 서버 및 반환 실행 결과를 실행 test.php에 액세스 할 수 있습니다 것을 볼 수 있습니다;

  4, fastcgi_cache_path 경로 [레벨 = 수준] [use_temp_path = ON | OFF] keys_zone = 이름 : 크기 [비활성 = 시간] [MAX_SIZE = 사이즈] [manager_files = 번호] [manager_sleep = 시간] [manager_threshold = 시간] [loader_files = 수 [loader_sleep 시간 = [loader_threshold 시간 = [정화기는 = ON은 | [purger_files = 번호] [purger_sleep 시간 = [purger_threshold = 시간] 오프 이러한 명령어 역할있는 FastCGI 프록시 캐시 정의와 같은 proxy_cache_path이며 상기 레벨 나타낸다 레벨이 3 개 레벨, 각 레벨 두 문자의 최대까지, 캐시 디렉토리를 정의 keys_zone = 이름 : 크기는 K / 이름과 메모리 공간 V 매핑의 크기를 나타내며, 지정된 디스크에 MAX_SIZE = 크기 표현 비활성 = 시간이 비활성 긴했다 캐시 저장 경로 공간 제한 버퍼;

  5, fastcgi_cache 영역 | 오프, 캐시 데이터에 지정된 캐시 공간 전화는, HTTP 서버, 위치 구성 섹션에서 사용할 수 있습니다

  6, fastcgi_cache_key 문자열, 키 캐시 항목의 문자열로 정의된다;

  7, fastcgi_cache_methods는 GET | HEAD | POST ......; 캐시를 사용하는 정의 요청 방법, 기본값은 GET 및 HEAD

  8, 숫자를 fastcgi_cache_min_uses, 여기에 지정된 횟수가 정리되지, 활성 상태로 간주되어 캐시 항목에 액세스하기 전에 정의되어야하는 최소한의 캐시 항목 비 활동 시간 비활성 공간 버퍼 정의된다;

  9 fastcgi_cache_valid [코드] tiem 각 응답 코드 버퍼 길이의 상이한 설정하는 단계;

  10 fastcgi_keep_conn에 | 해제; 연결 유지 여부를 설정합니다 기본적를하는 FastCGI 서버는 응답을 전송 한 후 즉시 연결을 닫습니다. 이 명령에 값으로 설정할 경우, FastCGI를 서버가 열린 연결을 유지 나타내는 nginx에.

  예

   팁 : 버퍼 공간이 HTTP 구성 섹션에 정의해야합니다 정의 할 때 위의 FastCGI를 정의하는 공간을 버퍼 나타내며, 그 이름이 메모리에 10m의 공간을 사용하여, php_cache이며, 실제 디스크의 경로는 / 캐시 / 프록시 /입니다 PHP-FPM / 디렉토리, 최대 공간 2g 아래;

   참고 : 위의 구성은, php_cache의 사용 FastCGI를,은 $ REQUEST_URI에 대한 캐시 키에 버퍼 공간을 나타낸다는 것을이 의미하는 것은 그 nginx를 조회 캐시가 위의 구성이 무엇인지 해시하여 캐시를 찾을이다, 캐시 라우팅과 같은 사용자 요청 URI 해시입니다 해시 대상으로 사용자 요청 URI를 nginx를 정의, 방법은 GET 또는 HEAD 방법 캐시를 사용하여 사용자가 요청한; 히트의 캐시 최소 번호는 3, 비활성 기간에 말을하는 것입니다, 캐시 엔트리 히트 카운트 미만이다 15 분 동안 반응 코드 리소스 캐시 (200) 또는 (302), 1 분의 응답 코드 리소스 캐시 (404), 및 개구 (3)는 캐시, 다음 수표 캐시의 유효 클리어한다 무효라고 간주 될 긴 연결하는 FastCGI 백엔드 서버;

  팁 : 우리가 우리 세대 캐싱에 정의 된 버퍼 공간에서, test.php 페이지를 방문 할 때 당신은 볼 수 있지만 우리가 이유를 세 가지 캐시를 수행 test.php이 페이지를 방문? 사실, 우리는 그것을 요구하는 상황과 응답을 볼 수있는 웹 개발자 모드 브라우저를 열 수 있습니다

   팁 : 우리가 캐시 공간에서 볼 수 있도록 세의 요청에 의해 백업됩니다 우리의 test.php 액세스 페이지를 볼 수있는 세 가지 캐시 항목이, 사실, 각 캐시 항목에 대한 캐시 공간 캐시 항목이 캐시 자원을 나타내고있다, 우리는 고양이 명령을 통해 캐시 항목의 내용을 볼 수 있으며, 다음과 같이

   提示:我们可以看到里面的缓存项纪录的信息,其中有一项KEY 就是我们指定的fastcgi_cache_key 说指定变量的值;我们查看缓存项里的内容很可能出现乱码,原因是缓存的内容有二进制,或者其他字符编码的内容;

  以上就是nginx作为反向代理服务器代理动态资源的介绍,总结一点,nginx代理动态资源和代理http资源的思想是类似的,只是使用的指令不一样;尤其对于缓存,两者的思想几乎完全一致,只是使用的模块和指令不同而已;对于动态资源我们除了要指定被代理的地址外,还需要指定被代理端资源路径,导入nginx变量与fastcgi变量对应的配置指令文件;对于缓存,两者没有什么区别;

추천

출처www.cnblogs.com/qiuhom-1874/p/12430543.html