이 글에서 공유하는 내용은 nginx가 교체-필터-nginx-모듈을 사용하여 콘텐츠 교체를 구현한다는 것입니다. 매우 상세합니다. 필요한 친구가 이를 참조할 수 있습니다.
때때로 우리는 반환된 콘텐츠에 일부 문자를 추가하고 싶습니다. 응답(예: PHP 인터페이스) 각 언어 코드와 관련된 메소드(예: PHP의str_replace
)를 사용하여 문자열을 교체할 수 있지만, 코드를 수정하지 않고 nginx 수준에서 교체하는 것이 더 편리합니다.str_replace
)进行替换,但是在nginx层面替换是更方便的,无需修改代码。
约定:本文源代码目录统一放在:/root/soft/src
里。
安装此模块需要先安装 sregex
运行库:
$ git clone https://github.com/agentzh/sregex $ cd sregex $ make $ make install
然后安装 replace-filter-nginx-module
模块:
$ cd /root/soft/src $ git clone https://github.com/agentzh/replace-filter-nginx-module $ wget http://nginx.org/download/nginx-1.12.2.tar.gz $ tar zxvf nginx-1.12.2.tar.gz
这里采用静态编译的方式安装模块,需要重新编译 nginx
。获取 nginx
上一次编译参数:
$ nginx -V nginx version: nginx/1.12.2 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-ld-opt=-ljemalloc --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module
这里添加 replace-filter-nginx-module
模块:
--add-module=/root/soft/src/replace-filter-nginx-module
最终编译命令:
cd nginx-1.12.2 $ ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-ld-opt=-ljemalloc --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --add-module=/root/soft/src/replace-filter-nginx-module $ make
由于这里是升级nginx,所以千万不要make install
,不然就真的覆盖了。 接下来手动替换二进制文件:
$ cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak $ cp -rfp ./objs/nginx /usr/local/nginx/sbin/
测试是否可行:
$ nginx -v nginx version: nginx/1.12.2
配置是否正常:
$ /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
这里测试的是:把接口返回的 img.test.com
换成 media.test.com
。
修改: /usr/local/nginx/conf/vhost/test.com.conf
location ~ [^/]\.php(/|$) { # comment try_files $uri =404; to enable pathinfo try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; }
为:
location ~ [^/]\.php(/|$) { replace_filter 'img.test.com' 'media.test.com' g; replace_filter_types application/json; # comment try_files $uri =404; to enable pathinfo try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf;
注意需要添加replace_filter_types
/root/soft/src
에 있습니다. Installation이 모듈을 설치하려면 먼저 sregex
런타임 라이브러리를 설치해야 합니다: $ /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
replace-filter-nginx-module
모듈을 설치합니다: # 升级完成第一次需要重启 $ service nginx restart # 热重启 $ /usr/local/nginx/sbin/nginx -s reload
nginx
를 다시 컴파일해야 합니다. nginx
마지막 컴파일 매개변수 가져오기: rrreee여기에 replace-filter-nginx-module
추가 모듈: make install
하지 마세요. 그렇지 않으면 덮어쓰게 됩니다. 다음으로 바이너리 파일을 수동으로 교체합니다: img.test.com 는 인터페이스를 반환합니다. code>는 <code>media.test.com
으로 대체됩니다. 수정: /usr/local/nginx/conf/vhost/test.com.conf
rrreee 다음으로:
replace_filter_types
를 추가해야 합니다.
저장 후 구성이 올바른지 확인하세요. rrreee그런 다음 핫 재시작:
rrreeeReference1. nginx 동적 추가 모듈이 설치되었습니다
http://coolnull.com/4245.html2. LNMP 원활한 nginx 업그레이드 및 ngx_lua 모듈 설치 튜토리얼
http://www.mamicode.com/info-...3. openresty/replace-filter-nginx-module: 응답 본문에서 정규식 대체 스트리밍 🎜🎜https ://github.com/openresty/...🎜🎜4.ngx_http_substitutions_filter_module보다 더 강력한 대체 모듈, sregex의 replacement-filter-nginx-module 🎜🎜https://www.cnblogs.com/archo...🎜🎜 🎜원본 버전: 🎜http://www.cnblogs.com/52fhy/...🎜🎜🎜관련 권장 사항: 🎜🎜🎜nginx 업로드 파일 크기 수정 방법 🎜🎜🎜🎜nginx PHP 인스턴스 구성 🎜🎜🎜🎜 PHP + Nginx 환경 Curl 액세스 로컬 시간 초과🎜🎜🎜🎜🎜
위 내용은 nginx는 교체 필터-nginx-모듈을 사용하여 콘텐츠 교체를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!