Nginx内置模块简介_玖富娱乐主管发布


玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。

常常编译Nginx的时刻看到./configure背面随着许多--with敕令,虽然晓得是增加模块,但一向也没有细致去研讨这些模块终究是什么作用。本文会对经常运用的内置模块做个简朴引见,轻易后续检索检察。由于模块之多,不会逐一细致引见,然则会留有参考链接,如感兴趣,能够细致去研讨。

这里发起人人肯定要多看官方文档!!!官方文档里的内容才是最全的:包孕申明、指令、作用域等等。
官方文档 http://nginx.org/en/docs
中文文档 http://tengine.taobao.org/nginx_docs/cn/docs/

http_auth_basic_module HTTP基础认证

用处:供应HTTP基础认证功用。
内置模块:是。
默许启用:是。若是须要禁用,编译Nginx时运用--without-http_auth_basic_module
作用域:http, server, location, limit_except

示例:

server {
    listen       80;   
    server_name  test.com;

    auth_basic   "登录认证";  
    auth_basic_user_file /etc/nginx-htpasswd;

    root   /mnt/html/www;
    index  index.html;
}

重启Nginx效劳后,接见test.com 就会要求输入用户名、暗码。

肯定要注意auth_basic_user_file途径,若是文件不存在,会诲人不倦的涌现403。

参考:
运用crypt设置装备摆设Basic Auth登录认证 - 飞鸿影~ - 博客园
https://www.cnblogs.com/52fhy/p/9657293.html

http_stub_status_module 状况信息

用处:该模块能够供应 Nginx 的状况信息。
内置模块:是。
默许启用:否。若是须要启用,编译Nginx时运用--with-http_stub_status_module
作用域:server, location

该模块唯一stub_status这一个指令。

运用示例:

location /nginx_status {
  stub_status on;
  access_log   off;
  allow 127.0.0.1;
  deny all;
}

接见会看到如许的信息:

Active connections: 291
server accepts handled requests
  16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106

其寄义:

  • 第一行
    以后的活泼衔接数:291
  • 第二行
    效劳器已吸收的衔接数:16630948(accepted connection #)
    效劳器已处置惩罚的衔接数:16630948(handled connection #)
    效劳器已处置惩罚的要求:31070465(能够算出,均匀每一个衔接有 1.8 个要求)(handled connection #)
  • 第三行
    Reading – Nginx 读取的要求头次数为 6;
    Writting – Nginx 读取要求体、处置惩罚要求并发送响应给客户端的次数为 179;
    Waiting – 以后运动的长衔接数:106。

参考:
1、剖解Nginx·模块开辟篇(5)解读内置非默许模块
https://blog.csdn.net/Poechant/article/details/7627843
2、Module ngx_http_stub_status_module
http://nginx.org/en/docs/http/ngx_http_stub_status_module.html

http_gzip_module 紧缩资本

用处:用于支撑gzip on等指令,用来减轻效劳器的带宽题目,经由gzip紧缩后的页面巨细能够变成本来的30%以至更小。
内置模块:是。
默许启用:是。若是须要禁用,编译Nginx时运用--without-http_gzip_module

示例:

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6].";

参考:
1、nginx的gzip紧缩功用参数引见(ngx_http_gzip_module)
https://blog.csdn.net/gnail_oug/article/details/53246026
2、Module ngx_http_gzip_module
http://nginx.org/en/docs/http/ngx_http_gzip_module.html

http_gzip_static_module 支撑.gz资本

用处:许可发送以.gz作为文件扩大名的预紧缩文件,以替代发送一样平常文件。
内置模块:是。
默许启用:否。若是须要启用,编译Nginx时运用--with-http_gzip_static_module

此模块的作用就是在接到要求后,会到url雷同的途径的文件体系去找扩大名为.gz的文件,若是存在直接把它发送进来,若是不存在,再将目的文件举行gzip紧缩,再发送进来,如许能够制止反复的紧缩无谓的斲丧资本,这个模块不受gzip_types限定,会对一切要求有用。所以发起不要在全局上运用,由于一样平常来说大部分都是动态要求,是不会有.gz这个文件的,发起只在部分我们确认有.gz的目次中运用。

该模块唯一gzip_static这一个指令。示例:

gzip_static  on;

参考:
1、Nginx中gzip_static模块的运用引见 - yancheng的专栏 - CSDN博客
https://blog.csdn.net/yc1022/article/details/21657547
2、Module ngx_http_gzip_static_module
http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html

http_sub_module 字符串替代

用处:该模块用于完成响应内容流动字符串替代。
内置模块:是。
默许启用:否。若是须要启用,编译Nginx时运用--with-http_sub_module
作用域:http, server, location

示例:

location / {
    sub_filter '<a href="http://127.0.0.1:8080/'  '<a href="https://$host/';
    sub_filter 'nginx.com' 'baidu.com';
    # 是不是仅替代一次,若是为off,则全局替代
    sub_filter_once on;
    # 替代的响应范例,*透露表现替代一切范例
    sub_filter_types text/html;
    # 是不是保存原始的Last-Modified。默许是on
    sub_filter_last_modified on;
}

该模块不支撑正则替代,灵活性不敷。支撑正则婚配替代的第三方模块:
1、ngx_http_substitutions_filter_module:https://github.com/yaoweibin/ngx_http_substitutions_filter_module
2、replace-filter-nginx-module:https://github.com/agentzh/replace-filter-nginx-module

参考:
1、nginx ngx_http_sub_module运用 - iuwai - 博客园
https://www.cnblogs.com/iuwai/p/4432084.html
2、nginx的with-http_sub_module模块运用之替代字符串 - 凉生书生 - 博客园
https://www.cnblogs.com/heruiguo/p/9076239.html
3、nginx运用replace-filter-nginx-module完成内容替代 - 飞鸿影~ - 博客园
https://www.cnblogs.com/52fhy/p/7956099.html

http_addition_module 追加内容

用处:用于在响应之前或许以后追加文本内容,好比想在站点底部追加一个js或许css,能够运用这个模块来完成。
内置模块:是。
默许启用:否。若是须要启用,编译Nginx时运用--with-http_addition_module

示例:

location / {
        addition_types text/html;
        add_before_body /2013/10/header.html;
        add_after_body  /2013/10/footer.html;
    }

参考:
1、nginx向响应内容中追加内容(ngx_http_addition_module模块) – 运维生计时候
http://www.ttlsa.com/linux/nginx-modules-ngx_http_addition_module/
2、Module ngx_http_addition_module
http://nginx.org/en/docs/http/ngx_http_addition_module.html

http_realip_module 猎取现实IP

用处:用于设置装备摆设REMOTE_ADDR现实IP。 经由过程这个模块许可我们转变客户端要求头中客户端IP地点值(比方,X-Real-IP 或 X-Forwarded-For)。
内置模块:是。
默许启用:否。若是须要启用,编译Nginx时运用--with-http_realip_module

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。-

一样平常是在客户端和效劳端中央增加了代理效劳器或许负载平衡,才须要运用这个模块,若是不运用,效劳端猎取的REMOTE_ADDR就不是客户端的实在IP。

设置装备摆设:
在后端效劳器 location 里头插进去

 #指定吸收来自哪一个前端发送的 IP head 能够是单个IP或许IP段
set_real_ip_from  192.168.1.0/24;
set_real_ip_from 192.168.2.1; 
#IP head  的对应参数,默许便可。
real_ip_header X-Real-IP; 

参考:
1、Module ngx_http_realip_module
http://nginx.org/en/docs/http/ngx_http_realip_module.html
2、--with-http_realip_module选项(背景Nginx效劳器纪录原始客户端的IP地点 ) - purple尘的专栏 - CSDN博客
https://blog.csdn.net/cscrazybing/article/details/50789234

http_ssl_module 支撑HTTPS

用处:此模块为Nginx供应HTTPS支撑。
内置模块:是。
默许启用:否。若是须要启用,编译Nginx时运用--with-http_ssl_module

该模块须要 OpenSSL 库。

yum install openssl openssl-devel

设置装备摆设示例:

server {                                                                                                                            
    listen      443 ssl;
    listen       80; 
    server_name  52fhy.com www.52fhy.com;
    index index.php index.html index.htm;
    root /www/52fhy.com/;
    
    #ssl on;  #这个开启后致使只能https接见
    ssl_certificate_key  /usr/local/nginx/conf/52fhy.com.key;
    ssl_certificate  /usr/local/nginx/conf/1_52fhy.com_bundle.crt;
    
    if ($scheme = http) {
     rewrite ^(.*)$  https://$host$1 permanent;
    }   
}  

参考:
1、网站运用https协定 - 飞鸿影~ - 博客园
https://www.cnblogs.com/52fhy/p/6139303.html
2、Module ngx_http_ssl_module
http://nginx.org/en/docs/http/ngx_http_ssl_module.html

http_image_filter_module 图片处置惩罚

用处:完成图片裁剪、缩放、扭转功用,支撑jpg、gif、png花样。
内置模块:是。
默许启用:否。若是须要启用,编译Nginx时运用--with-http_image_filter_module

依靠GD库:

yum install gd-devel

示例:

按比例裁剪图片:

location ~* .*_(d )x(d ).(JPG|jpg|gif|png|PNG)$ {
    set $img_width $1;
    set $img_height $2;
    image_filter   crop  $img_width $img_height;
    image_filter_jpeg_quality  80;
    image_filter_buffer 10M;
    error_page      415  = /empty;
}

能够只指定一个尺寸,另一个尺寸用“-”。若是碰到毛病,效劳器返回415毛病码。

按比例对图象举行缩放:

location ~* .*_(d )x(d ).(JPG|jpg|gif|png|PNG)$ {
    set $img_width $1;
    set $img_height $2;
    image_filter   resize  $img_width $img_height;
    image_filter_jpeg_quality  80;
    image_filter_buffer 10M;
    error_page      415  = /empty;
}

参考:
1、Nginx的 http_image_filter_module 模块运用申明 - 进修印记 - CSDN博客
https://blog.csdn.net/revitalizing/article/details/55505853

http_geoip_module 支撑GeoIP

用处:GeoIP支撑,能够用于IP接见限定。
内置模块:是。
默许启用:否。若是须要启用,编译Nginx时运用--with-http_geoip_module

参考:
nginx运用GeoIP限定接见并支撑白名单 - 阅心条记
http://www.52os.net/articles/configure-nginx-using-geoip-allow-whitelist.html

http_auth_request_module 第三方auth支撑

用处:Nginx默许支撑运用auth_basic举行本机考证,也能够运用该模块以支撑第三方认证。供应auth_request指令,Nginx 效劳器经由过程 header 的返回状况推断是不是认证经由过程。
内置模块
:是。
默许启用:否。若是须要启用,编译Nginx时运用--with-http_auth_request_module

示例:

server {
    listen 80;
    server_name local.server.com;

    auth_request /auth;

    location / {
        root   html;
        index  index.html;
    }

    location /auth {
        proxy_pass http://auth.server.com/HttpBasicAuthenticate.php;
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
    }
}

参考:
Nginx 的两种认证体式格局 - WangXiaoQiang - 博客园
http://www.cnblogs.com/wangxiaoqiangs/p/6184181.html

http_flv_module 流媒体点播

一样平常合营nginx-rtmp-module完成流媒体效劳器。相干模块:

  • http_flv_module: 支撑flv。内置模块。
  • http_mp4_module: 支撑mp4。内置模块。
  • nginx_mod_h264_streaming: 使nginx支撑h264编码的视频
  • nginx-rtmp-module: 支撑rtmp协定

个中http_flv_modulehttp_mp4_module两个模块是nginx自带的, 能够在编译的时刻加上响应的选项。

nginx_mod_h264_streaming的下载地点: http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Nginx-Version2

nginx_mod_h264_streaming 装置:

cd ~
wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
$ tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz

$ cd ~/nginx-1.7.9
$ ./configure --add-module=$HOME/nginx_mod_h264_streaming-2.2.7 --sbin-path=/usr/local/sbin --with-debug

$ make
$ sudo make install

nginx-rtmp-module托管在GitHub上: https://github.com/arut/nginx-rtmp-module

http_flv_module 设置装备摆设示例:

location ~ .flv$ {
    flv;
}

http_mp4_module 设置装备摆设示例:

location /video/ {
    mp4;
    mp4_buffer_size       1m;
    mp4_max_buffer_size   5m;
    mp4_limit_rate        on;
    mp4_limit_rate_after  30s;
}

参考:
1、Nginx搭建flv视频点播效劳器 - wanghetao - 博客园
http://www.cnblogs.com/wanghetao/p/3418744.html
2、nginx完成rtmp,flv,mp4流媒体效劳器 - 小雨伞漂流记 - 开源中国
https://my.oschina.net/ososchina/blog/833909
3、从零搭建流媒体效劳器 obs推流直播 - qzcsu的博客 - CSDN博客
https://blog.csdn.net/qzcsu/article/details/72782759
4、nginx搭建支撑http和rtmp协定的流媒体效劳器之一-andersonyan-ChinaUnix博客
http://blog.chinaunix.net/uid-26000296-id-4335063.html
5、nginx搭建支撑http和rtmp协定的流媒体效劳器之二-andersonyan-ChinaUnix博客
http://blog.chinaunix.net/uid-26000296-id-4335079.html

附录

设置装备摆设信息

输入./configure --help能够检察Nginx一切支撑设置装备摆设的内置模块的设置装备摆设信息。个中:

  • with开首的透露表现该模块默许是未开启的,能够运用--with开启。
  • without开首的透露表现该模块默许是启用的,能够运用--without禁用。
  • 第三方模块运用--add-module=PATH增加。若是支撑动态加载,运用--add-dynamic-module=PATH增加。
$ ./configure --help

  --help                             print this message

  --prefix=PATH                      set installation prefix
  --sbin-path=PATH                   set nginx binary pathname
  --modules-path=PATH                set modules path
  --conf-path=PATH                   set nginx.conf pathname
  --error-log-path=PATH              set error log pathname
  --pid-path=PATH                    set nginx.pid pathname
  --lock-path=PATH                   set nginx.lock pathname

  --user=USER                        set non-privileged user for
                                     worker processes
  --group=GROUP                      set non-privileged group for
                                     worker processes

  --build=NAME                       set build name
  --builddir=DIR                     set build directory

  --with-select_module               enable select module
  --without-select_module            disable select module
  --with-poll_module                 enable poll module
  --without-poll_module              disable poll module

  --with-threads                     enable thread pool support

  --with-file-aio                    enable file AIO support

  --with-http_ssl_module             enable ngx_http_ssl_module
  --with-http_v2_module              enable ngx_http_v2_module
  --with-http_realip_module          enable ngx_http_realip_module
  --with-http_addition_module        enable ngx_http_addition_module
  --with-http_xslt_module            enable ngx_http_xslt_module
  --with-http_xslt_module=dynamic    enable dynamic ngx_http_xslt_module
  --with-http_image_filter_module    enable ngx_http_image_filter_module
  --with-http_image_filter_module=dynamic
                                     enable dynamic ngx_http_image_filter_module
  --with-http_geoip_module           enable ngx_http_geoip_module
  --with-http_geoip_module=dynamic   enable dynamic ngx_http_geoip_module
  --with-http_sub_module             enable ngx_http_sub_module
  --with-http_dav_module             enable ngx_http_dav_module
  --with-http_flv_module             enable ngx_http_flv_module
  --with-http_mp4_module             enable ngx_http_mp4_module
  --with-http_gunzip_module          enable ngx_http_gunzip_module
  --with-http_gzip_static_module     enable ngx_http_gzip_static_module
  --with-http_auth_request_module    enable ngx_http_auth_request_module
  --with-http_random_index_module    enable ngx_http_random_index_module
  --with-http_secure_link_module     enable ngx_http_secure_link_module
  --with-http_degradation_module     enable ngx_http_degradation_module
  --with-http_slice_module           enable ngx_http_slice_module
  --with-http_stub_status_module     enable ngx_http_stub_status_module

  --without-http_charset_module      disable ngx_http_charset_module
  --without-http_gzip_module         disable ngx_http_gzip_module
  --without-http_ssi_module          disable ngx_http_ssi_module
  --without-http_userid_module       disable ngx_http_userid_module
  --without-http_access_module       disable ngx_http_access_module
  --without-http_auth_basic_module   disable ngx_http_auth_basic_module
  --without-http_autoindex_module    disable ngx_http_autoindex_module
  --without-http_geo_module          disable ngx_http_geo_module
  --without-http_map_module          disable ngx_http_map_module
  --without-http_split_clients_module disable ngx_http_split_clients_module
  --without-http_referer_module      disable ngx_http_referer_module
  --without-http_rewrite_module      disable ngx_http_rewrite_module
  --without-http_proxy_module        disable ngx_http_proxy_module
  --without-http_fastcgi_module      disable ngx_http_fastcgi_module
  --without-http_uwsgi_module        disable ngx_http_uwsgi_module
  --without-http_scgi_module         disable ngx_http_scgi_module
  --without-http_memcached_module    disable ngx_http_memcached_module
  --without-http_limit_conn_module   disable ngx_http_limit_conn_module
  --without-http_limit_req_module    disable ngx_http_limit_req_module
  --without-http_empty_gif_module    disable ngx_http_empty_gif_module
  --without-http_browser_module      disable ngx_http_browser_module
  --without-http_upstream_hash_module
                                     disable ngx_http_upstream_hash_module
  --without-http_upstream_ip_hash_module
                                     disable ngx_http_upstream_ip_hash_module
  --without-http_upstream_least_conn_module
                                     disable ngx_http_upstream_least_conn_module
  --without-http_upstream_keepalive_module
                                     disable ngx_http_upstream_keepalive_module
  --without-http_upstream_zone_module
                                     disable ngx_http_upstream_zone_module

  --with-http_perl_module            enable ngx_http_perl_module
  --with-http_perl_module=dynamic    enable dynamic ngx_http_perl_module
  --with-perl_modules_path=PATH      set Perl modules path
  --with-perl=PATH                   set perl binary pathname

  --http-log-path=PATH               set http access log pathname
  --http-client-body-temp-path=PATH  set path to store
                                     http client request body temporary files
  --http-proxy-temp-path=PATH        set path to store
                                     http proxy temporary files
  --http-fastcgi-temp-path=PATH      set path to store
                                     http fastcgi temporary files
  --http-uwsgi-temp-path=PATH        set path to store
                                     http uwsgi temporary files
  --http-scgi-temp-path=PATH         set path to store
                                     http scgi temporary files

  --without-http                     disable HTTP server
  --without-http-cache               disable HTTP cache

  --with-mail                        enable POP3/IMAP4/SMTP proxy module
  --with-mail=dynamic                enable dynamic POP3/IMAP4/SMTP proxy module
  --with-mail_ssl_module             enable ngx_mail_ssl_module
  --without-mail_pop3_module         disable ngx_mail_pop3_module
  --without-mail_imap_module         disable ngx_mail_imap_module
  --without-mail_smtp_module         disable ngx_mail_smtp_module

  --with-stream                      enable TCP/UDP proxy module
  --with-stream=dynamic              enable dynamic TCP/UDP proxy module
  --with-stream_ssl_module           enable ngx_stream_ssl_module
  --with-stream_realip_module        enable ngx_stream_realip_module
  --with-stream_geoip_module         enable ngx_stream_geoip_module
  --with-stream_geoip_module=dynamic enable dynamic ngx_stream_geoip_module
  --with-stream_ssl_preread_module   enable ngx_stream_ssl_preread_module
  --without-stream_limit_conn_module disable ngx_stream_limit_conn_module
  --without-stream_access_module     disable ngx_stream_access_module
  --without-stream_geo_module        disable ngx_stream_geo_module
  --without-stream_map_module        disable ngx_stream_map_module
  --without-stream_split_clients_module
                                     disable ngx_stream_split_clients_module
  --without-stream_return_module     disable ngx_stream_return_module
  --without-stream_upstream_hash_module
                                     disable ngx_stream_upstream_hash_module
  --without-stream_upstream_least_conn_module
                                     disable ngx_stream_upstream_least_conn_module
  --without-stream_upstream_zone_module
                                     disable ngx_stream_upstream_zone_module

  --with-google_perftools_module     enable ngx_google_perftools_module
  --with-cpp_test_module             enable ngx_cpp_test_module

  --add-module=PATH                  enable external module
  --add-dynamic-module=PATH          enable dynamic external module

  --with-compat                      dynamic modules compatibility

  --with-cc=PATH                     set C compiler pathname
  --with-cpp=PATH                    set C preprocessor pathname
  --with-cc-opt=OPTIONS              set additional C compiler options
  --with-ld-opt=OPTIONS              set additional linker options
  --with-cpu-opt=CPU                 build for the specified CPU, valid values:
                                     pentium, pentiumpro, pentium3, pentium4,
                                     athlon, opteron, sparc32, sparc64, ppc64

  --without-pcre                     disable PCRE library usage
  --with-pcre                        force PCRE library usage
  --with-pcre=DIR                    set path to PCRE library sources
  --with-pcre-opt=OPTIONS            set additional build options for PCRE
  --with-pcre-jit                    build PCRE with JIT compilation support

  --with-zlib=DIR                    set path to zlib library sources
  --with-zlib-opt=OPTIONS            set additional build options for zlib
  --with-zlib-asm=CPU                use zlib assembler sources optimized
                                     for the specified CPU, valid values:
                                     pentium, pentiumpro

  --with-libatomic                   force libatomic_ops library usage
  --with-libatomic=DIR               set path to libatomic_ops library sources

  --with-openssl=DIR                 set path to OpenSSL library sources
  --with-openssl-opt=OPTIONS         set additional build options for OpenSSL

  --with-debug                       enable debug logging

编译示例

$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-pcre
$ make -j2
$ make install

(完)

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。