nginx 에서 perl 모듈 사용
./configure --with-http_perl_module
make 에서 다음 과 같은 오류 가 발생 하면: Can 't locate ExtUtils / Embed. pm in @ INC(@INC contains: /usr/lib/perl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/local/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl /usr/local/lib/perl5/site_perl .)
당신 의 기계 에 perl - devel perl - ExtUtils - Embed 를 설치 해 야 할 수도 있 습 니 다. centos 시스템 에 대해 서 는 직접 yum 을 사용 하여 해결 해 야 합 니 다. 예 를 들 어:
yum -y install perl-devel perl-ExtUtils-Embed
특히 주의해 야 할 것 은 blocking 의 IO 나 네트워크 요청 (예 를 들 어 DNS 조회) 이 있어 서 는 안 된다 는 것 입 니 다. 그러면 nginx 의 성능 에 심각 한 영향 을 줄 수 있 습 니 다. 꼭 필요 하 다 면 참고 하 시기 바 랍 니 다.http://zzzcpan.github.com/nginx-perl/증강 판 의 제3자 perl 모듈
nginx 에서 perl 을 사용 하 는 방법 은 두 가지 가 있 습 니 다. 하 나 는 설정 파일 에 직접 쓰 는 것 이 고 다른 하 나 는 perl 스 크 립 트 를 외부 파일 에 쓰 는 것 입 니 다. Nginx 프로필 은 Perl 을 직접 조작 합 니 다. perl 과 perl set 는 첫 번 째 방법 입 니 다. 쓸 하위 함 수 를 Nginx 파일 에 직접 씁 니 다. 문법 은: perl Nginx 의 localion 에 서 는 외부 파일 로 파일 을 표시 하지 않 으 려 면 사용 할 수 있 습 니 다.
perl '
sub {
$r = shift;
#
return 404; # HTTP
}
';
perl set 은 Nginx 의 변 수 를 설정 합 니 다.
perl_set $value ' # value nginx perl
sub {
my $r = shift;
return "xxx";# $value
}
';
다음은 두 번 째 용법 을 소개 한다.
nginx 의 루트 디 렉 터 리 가 / usr / local / nginx 라 고 가정 하면 perl 스 크 립 트 에 저 장 된 디 렉 터 리 는 nginx 의 루트 디 렉 터 리 에 있 는 perl / lib 에서 스 크 립 트 이름 은 test. pm 이 고 nginx 설정 은:
# http
perl_modules perl/lib;
perl_require test.pm;
# server
location /user/ {
perl pkg_name::process;
}
위 설정 은 모든 것 을http://servername/user/다음 요청 은 test. pm 스 크 립 트 에서 정의 하 는 process 방법 으로 처리 합 니 다.
test. pm 스 크 립 트 의 내용 은 다음 과 같 습 니 다.
package pkg_name;
use Time::Local;
use nginx;
sub process {
my $r = shift;
$r->send_http_header('text/html; charset=utf-8');
my @arr = split('/', $r->uri);
my $username = @arr[2];
if (!$username || ($username eq "")) {
$username = "Anonymous";
}
$r->print('Hello, You name is : ' . $username . '');
$r->rflush();
return;
}
1;
__END__
방문 하 다http://servername/user/kuerant당신 은 홈 페이지 에서 볼 수 있 을 것 입 니 다.
Hello, You name is : kuerant
실전: 우 리 는 이 걸 로 내 사 이 트 를 걸 러 내 고 15 초 과정 치 를 설정 합 니 다. 만약 에 열 린 t 뒤에 추 가 된 시간 이 15 초 를 넘 으 면 403 래 deny 입 니 다. 그렇지 않 으 면 정상적으로 웹 페이지 를 엽 니 다.
http://localhost/?t=1306138966
다음은 nginx 의 메 인 설정 입 니 다. 프로그램 자체 가 필요 합 니 다.
perl_set $time_check '
sub {
my $r = shift;
my $args = $r->args;
if ($args =~ /t=(\d+)/){
my $time = $1;
if ( abs( $time - time() ) < 15 ){
return 0;
}
}
return 1;
}
';
keepalive_timeout 65;
server {
listen 8080;
server_name _;
root /usr/local/nginx/html;
if ($time_check = 1){
return 403;
}
location / {
# perl hello::handler;
}
또한: use nginx 를 사용 할 때 다음 과 같은 대상 이 호출 될 수 있 습 니 다. 위의 shift 한 대상 이 $r 에 있 는 것 을 볼 수 있 고 $r 로 그 대상 을 호출 할 수 있 습 니 다.
$r->args – .
$r->discard_request_body – Nginx request body .
$r->filename –
$r->has_request_body(handler) – , 0; , handler 1; ,nginx . :handler 。 :
package hello;
use nginx;
sub handler {
my $r = shift;
if ($r->request_method ne "POST") {
return DECLINED;
}
if ($r->has_request_body(\&post)) {
return OK;
}
return HTTP_BAD_REQUEST;
}
sub post {
my $r = shift;
$r->send_http_header;
$r->print("request_body: \"", $r->request_body, "\"<br/>");
$r->print("request_body_file: \"", $r->request_body_file, "\"<br/>
");
return OK;
}
1;
__END__
$r->allow_ranges - enables the use of byte ranges when sending responses.
$r->discard_request_body - instructs nginx to discard the request body.
$r->header_in(header) –
$r->header_only –
$r->header_out(header, value) –
$r->internal_redirect(uri) – URI, perl . header_out(Location….
$r->print(args, …) –
$r->request_body – (body , nginx client_body_buffer_size. )
$r->request_body_file — body ,
$r->request_method — HTTP method.
$r->remote_addr – IP .
$r->rflush –
$r->sendfile(file [, displacement [, length ] ) – , , perl .
$r->send_http_header(type) – http
$r->sleep(milliseconds, handler) – , nginx , ,nginx , reference, $r->variable().
$r->status(code) – http
$r->unescape(text) – http %XX
$r->uri – URL.
$r->variable(name[, value]) –
더 자세 한 내용 참고http://nginx.org/en/docs/http/ngx_http_perl_module.html
전 재 를 환영 합 니 다. 전 재 는 문장의 출처 를 밝 혀 주 십시오. 감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.