Nginx 시리즈 6: 중요 모듈
[root@localhost ~]# nginx -V
nginx version: nginx/1.15.9
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
Nginx模块名称 | 模块作用 |
---|---|
ngx_http_access_module | 四层基于IP的访问控制,可以通过匹配客户端源IP地址进行限制 |
ngx_http_auth_basic_module | 状态页,使用basic机制进行用户认证,在编译安装nginx的时候需要添加编译参数--withhttp_stub_status_module,否则配置完成之后监测会是提示语法错误 |
ngx_http_stub_status_module | 状态统计模块 |
ngx_http_gzip_module | 文件的压缩功能 |
ngx_http_gzip_static_module | 静态压缩模块 |
ngx_http_ssl_module | nginx 的https 功能 |
ngx_http_rewrite_module | 重定向模块,解析和处理rewrite请求 |
ngx_http_referer_module | 防盗链功能,基于访问安全考虑 |
ngx_http_proxy_module | 将客户端的请求以http协议转发至指定服务器进行处理 |
ngx_stream_proxy_module | tcp负载,将客户端的请求以tcp协议转发至指定服务器处理 |
ngx_http_fastcgi_module | 将客户端对php的请求以fastcgi协议转发至指定服务器助理 |
ngx_http_uwsgi_module | 将客户端对Python的请求以uwsgi协议转发至指定服务器处理 |
ngx_http_headers_module | 可以实现对头部报文添加指定的key与值 |
ngx_http_upstream_module | 负载均衡模块,提供服务器分组转发、权重分配、状态监测、调度算法等高级功能 |
ngx_stream_upstream_module | 后端服务器分组转发、权重分配、状态监测、调度算法等高级功能 |
ngx_http_fastcgi_module | 实现通过fastcgi协议将指定的客户端请求转发至php-fpm处理 |
ngx_http_flv_module | 为flv伪流媒体服务端提供支持 |
nginx_substitutions_filter 响应过滤替换
这个是比较冷门但异常强大的模块,它不是重定向,也不是请求过滤,而是对http响应进行魔术般的过滤替换。在响应体上执行正则表达式和固定字符串替换的过滤模块。这个模块与NGINX的本机替换模块非常不同。它扫描输出链缓冲区并逐行匹配字符串。
一个真实的例子:
location / {
proxy_pass https://198.198.20.188:8443;
proxy_redirect default;
subs_filter_types text/css text/plain text/xml text/javascript application/javascript application/json application/xml;
subs_filter 'https://198.198.20.188:8443' 'https://nytalktest.gdnybank.com:6017' gir;
subs_filter '198.198.20.188:8443' 'nytalktest.gdnybank.com:6017' gir;
subs_filter 'https%3a%2f%2f198.198.20.188%3a8443' 'https%3a%2f%2fnytalktest.gdnybank.com%3a6017' gir;
proxy_set_header Accept-Encoding "";
}
설치:
git clone git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
./configure --add-module=/path/to/module
nginx-push-stream-module
Push Stream Module 은 http 기술 을 사용 하여 연결 파 이 프 를 실현 합 니 다. 프로젝트 에 서 는 주로 실시 간 메시지 의 푸 시, 예 를 들 어 채 팅 기능 에 사 용 됩 니 다.
Push Stream Module 은 주로 pub / sub 모드 로 긴 연결 을 관리 합 니 다. 사용 자 는 연결 채널 을 신청 할 수 있 고 채널 은 이 채널 을 구독 할 수 있 습 니 다. 메시지 푸 시 자 는 연결 채널 에 메 시 지 를 보 낼 수 있 습 니 다. 그러면 이 채널 을 구독 하 는 모든 사용자 가 이 메 시 지 를 받 을 수 있 습 니 다.설정:
# add the push_stream_shared_memory_size to your http context
http {
push_stream_shared_memory_size 32M;
# define publisher and subscriber endpoints in your server context
server {
location /channels-stats {
# activate channels statistics mode for this location
push_stream_channels_statistics;
# query string based channel id
push_stream_channels_path $arg_id;
}
location /pub {
# activate publisher (admin) mode for this location
push_stream_publisher admin;
# query string based channel id
push_stream_channels_path $arg_id;
}
location ~ /sub/(.*) {
# activate subscriber (streaming) mode for this location
push_stream_subscriber;
# positional channel path
push_stream_channels_path $1;
}
}
}
구독 예 게시
# Subs
curl -s -v --no-buffer 'http://localhost/sub/my_channel_1'
curl -s -v --no-buffer 'http://localhost/sub/your_channel_1'
curl -s -v --no-buffer 'http://localhost/sub/your_channel_2'
# Pubs
curl -s -v -X POST 'http://localhost/pub?id=my_channel_1' -d 'Hello World!'
curl -s -v -X POST 'http://localhost/pub?id=your_channel_1' -d 'Hi everybody!'
curl -s -v -X POST 'http://localhost/pub?id=your_channel_2' -d 'Goodbye!'
# Channels Stats for publisher (json format)
curl -s -v 'http://localhost/pub?id=my_channel_1'
# All Channels Stats summarized (json format)
curl -s -v 'http://localhost/channels-stats'
# All Channels Stats detailed (json format)
curl -s -v 'http://localhost/channels-stats?id=ALL'
# Prefixed Channels Stats detailed (json format)
curl -s -v 'http://localhost/channels-stats?id=your_channel_*'
# Channels Stats (json format)
curl -s -v 'http://localhost/channels-stats?id=my_channel_1'
# Delete Channels
curl -s -v -X DELETE 'http://localhost/pub?id=my_channel_1'
상세 한 소개:
https://github.com/wandenberg/nginx-push-stream-module
ngx_http_gzip_모듈 모듈
압축 모듈 은 전송 데이터 의 크기 감소 에 유리 하지만 cpu 사용 은 높 아 집 니 다.전 송 된 데 이 터 를 압축 해 야 하기 때문이다.1. gzip on | off;압축 기능 2. gzip 열기 또는 닫 기comp_level level;압축 비 설정, 일반 사용 63. gzipdisable regex …;요청 메시지 의 "User - agent" 가 성공 적 인 요청 과 일치 하 며 압축 하지 않 습 니 다.4. gzip_min_length length;압축 기능 의 응답 메시지 크기 한도 값 사용 하기;어떤 값 보다 크 면 압축 기능 이 시 작 됩 니 다. 5. gzipbuffers number size;압축 기능 을 실현 할 때 설정 한 버퍼 의 수량 과 각 캐 시 구역 의 크기 를 지원 합 니 다.6. gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any …;nginx 는 프 록 시 서버 로 서 프 록 시 서버 에서 보 낸 응답 메 시 지 를 받 은 후 어떤 조건 에서 압축 기능 을 사용 합 니까?
off: 프 록 시 에 대한 요청 은 no - cache, no - store, private 를 사용 하지 않 습 니 다. 프 록 시 서버 에서 받 은 응답 메시지 의 첫 번 째 Cache - Control 값 이 이 세 가지 중 어느 것 이 든 압축 기능 을 사용 합 니 다.gzip_types mime-type …;압축 필 터 는 여기에서 설정 한 MIME 형식의 내용 만 압축 기능 을 사용 합 니 다.예시:
gzip on;
gzip_comp_level 6;
gzip_min_length 64;
gzip_proxied any;
gzip_types text/xml text/css application/javascript;
ngx_http_referer_모듈 모듈
이 모듈 을 기반 으로 도 난 방지 체인 을 만 들 수 있 습 니 다.Refer 는 HTTP 요청 헤더 의 일부분 으로 브 라 우 저 (또는 브 라 우 저 행동 을 모 의) 가 웹 서버 에 요청 을 보 낼 때 헤더 정보 에 Refer 가 포함 되 어 있 습 니 다.예 를 들 어 저 는 www. google. com 에 www. baidu. com 링크 가 있 습 니 다. 그러면 이 www. baidu. com 을 클릭 하면 header 정보 에 있 습 니 다.
Referer=http://www.google.comvalid_referers none | blocked | server_names | string …;refer 의 첫 번 째 합 법 적 인 사용 가능 한 값 을 정의 합 니 다.
none: 메시지 의 첫 번 째 부분 에 referer 첫 번 째 부분 이 없습니다.blocked: 메 시 지 를 요청 하 는 referer 의 첫 번 째 부분 에 값 이 없습니다.server_names: 매개 변 수 는 호스트 이름 이나 호스트 이름 모드 로 값 을 가 질 수 있 습 니 다.arbitrary_string: 직접 문자열 이지 만 * 를 어댑터 로 사용 할 수 있 습 니 다.regular expression: 지정 한 정규 표현 식 모드 에 일치 하 는 문자열;사용 ~ 선두, 예 를 들 어 ~. *. ice. com;설정 예시:
valid_referers none block server_names *.ice.com ; #3 referers
if($invalid_referer) {
return 403; ## referer valid_referers , 403
}
더 많은 제3자 모듈
https://www.nginx.com/resources/wiki/modules/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.