常用命令

# 查看nginx的版本号
nginx -v
# 启动nginx
start nginx
# 快速停止或关闭nginx
nginx -s stop
# 正常停止或关闭nginx
nginx -s quit
# 配置文件nginx.conf修改重装载命令
nginx -s reload

静态文件代理

修改nginx.conf(/use/local/nginx)

添加如下server

server { 
        listen       8088;
        server_name web_resources;
       # 代理文件地址
        root   /data/nginx/static;
       # 开启浏览器文件目录访问
        autoindex on; 
        # 拦截所有的请求
        location / {
         # 禁止浏览器使用缓存
         # add_header Cache-Control no-store;
         # 设置浏览器缓存策略,过期时间为一个月
         add_header Cache-Control "public,max-age=2592000";
         # 解决跨域问题
         add_header 'Access-Control-Allow-Origin' '*';
        }

    }

设置好后重启nginx,查看前端的header,如图所示证明设置有效

nginx索引清除 nginx清除缓存命令_nginx索引清除

设置缓存策略

Cache-Control: max-age  该指令指定从当前请求开始,允许获取的响应被重用的最长时间(单位为秒。

例如:Cache-Control:max-age=60表示响应可以再缓存和重用 60 秒。需要注意的是,在max-age指定的时间之内,浏览器不会向服务器发送任何请求,包括验证缓存是否有效的请求,也就是说,如果在这段时间之内,服务器上的资源发生了变化,那么浏览器将不能得到通知,而使用老版本的资源。所以在设置缓存时间的长度时,需要慎重。

public和private ,如果设置了public,表示该响应可以再浏览器或者任何中继的Web代理中缓存,public是默认值,即Cache-Control:max-age=60等同于Cache-Control:public, max-age=60。  在服务器设置了private比如Cache-Control:private, max-age=60的情况下,表示只有用户的浏览器可以缓存private响应,不允许任何中继Web代理对其进行缓存 - 例如,用户浏览器可以缓存包含用户私人信息的 HTML 网页,但是 CDN 不能缓存。

# 不使用缓存
add_header Cache-Control no-store;
# 设置缓存时间2592000秒
add_header Cache-Control "public,max-age=2592000";

动态服务代理

代理后台服务

upstream geoserver{
    ip_hash;
    server 192.168.1.251:8080 weight=1;
    server 192.168.1.252:8080 weight=1;
    server 192.168.1.253:8080 weight=1;
}
server {
     listen 8282;
     server_name  192.168.1.251;

     location / {
        proxy_pass http://geoserver;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

如上设置proxy_set_header后,我们访问nginx代理的服务时,就不会因为打开新页面而跳转回原地址了

比如:nginx代理的地址为:192.168.1.251:8282

项目地址为:192.168.1.124:8181

在打开新的页面时地址不会有251变成124或其他地址

upstream geoserver{
    ip_hash;
    server 192.168.1.251:8080 weight=1;
    server 192.168.1.252:8080 weight=1;
    server 192.168.1.253:8080 weight=1;
}

upstream用于负载均衡

使用gzip压缩

修改nginx.conf(/use/local/nginx)

修改如下server

server {  #web_resources
       gzip on;
       gzip_min_length 1k;
       gzip_buffers 4 16k;
       gzip_http_version 1.1;
       gzip_comp_level 6;
       gzip_types text/plain text/css  application/javascript application/json image/jpeg image/png image/gif;
       gzip_disable "MSIE [1-6]\.";
       gzip_vary on;
                                                        
        listen       8088;
        server_name web_resources;
        root   /data/nginx/static;
        autoindex on;
        location / {
        # add_header Cache-Control no-store;
        add_header Cache-Control "public,max-age=2592000";
         add_header 'Access-Control-Allow-Origin' '*';
        }
    }

重启nginx,访问资源文件,如图所示就是成功了

nginx索引清除 nginx清除缓存命令_nginx索引清除_02

参数

说明

默认值

gzip on/off

开启/关闭gzip压缩

默认是off

gzip_min_length 1k

允许压缩的页面最小字节数

默认为0

gzip_buffers 4 16k

系统获取几个单位的缓存用于存储gzip的压缩结果数据流,4 16k 代表以16k为单位,按照原始数据大小以16k为单位的4倍申请内存

gzip_http_version 1.1

设置http1.1协议才进行压缩

默认为1.1

gzip_comp_level 6

表示gzip的压缩级别,范围是1-9,数据越大,压缩的越小,耗CPU,传输更快,一般选择适中的级别

默认为1

gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json

设置哪种类型可以进行压缩,需要什么类型可以在参考nginx.conf同目录下的mime.types文件

默认是text/html

gzip_disable “MSIE [1-6].”

禁用gzip的条件,这里表示禁用IE1-6的版本,因为低版本不支持gzip

gzip_vary on

给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断是否需要压缩

NGINX语法

NGINX可以在一个server中使用不同判断,对不同的问价进行区别处理

匹配指定后缀文件

server {
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
    # 匹配后需要做的事情
    
    #设置缓存上面定义的后缀文件缓存到浏览器的生存时间
    expires   3d;
  }
}

NGINX解决跨域

配置如下:

server {
    listen       80;
    server_name  localhost;

location / {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain; charset=utf-8';
        add_header 'Content-Length' 0;
        return 204;
    }
    root   /var/www/html;
    index  index.html index.htm;
}

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/html;
    }

}

NGINX防盗链

待补充

参考

###补充类容

  • NGINX中文件类型对应关系
types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;

    font/woff                                        woff;
    font/woff2                                       woff2;

    application/java-archive                         jar war ear;
    application/json                                 json;
    application/mac-binhex40                         hqx;
    application/msword                               doc;
    application/pdf                                  pdf;
    application/postscript                           ps eps ai;
    application/rtf                                  rtf;
    application/vnd.apple.mpegurl                    m3u8;
    application/vnd.google-earth.kml+xml             kml;
    application/vnd.google-earth.kmz                 kmz;
    application/vnd.ms-excel                         xls;
    application/vnd.ms-fontobject                    eot;
    application/vnd.ms-powerpoint                    ppt;
    application/vnd.oasis.opendocument.graphics      odg;
    application/vnd.oasis.opendocument.presentation  odp;
    application/vnd.oasis.opendocument.spreadsheet   ods;
    application/vnd.oasis.opendocument.text          odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc                         wmlc;
    application/x-7z-compressed                      7z;
    application/x-cocoa                              cco;
    application/x-java-archive-diff                  jardiff;
    application/x-java-jnlp-file                     jnlp;
    application/x-makeself                           run;
    application/x-perl                               pl pm;
    application/x-pilot                              prc pdb;
    application/x-rar-compressed                     rar;
    application/x-redhat-package-manager             rpm;
    application/x-sea                                sea;
    application/x-shockwave-flash                    swf;
    application/x-stuffit                            sit;
    application/x-tcl                                tcl tk;
    application/x-x509-ca-cert                       der pem crt;
    application/x-xpinstall                          xpi;
    application/xhtml+xml                            xhtml;
    application/xspf+xml                             xspf;
    application/zip                                  zip;

    application/octet-stream                         bin exe dll;
    application/octet-stream                         deb;
    application/octet-stream                         dmg;
    application/octet-stream                         iso img;
    application/octet-stream                         msi msp msm;

    audio/midi                                       mid midi kar;
    audio/mpeg                                       mp3;
    audio/ogg                                        ogg;
    audio/x-m4a                                      m4a;
    audio/x-realaudio                                ra;

    video/3gpp                                       3gpp 3gp;
    video/mp2t                                       ts;
    video/mp4                                        mp4;
    video/mpeg                                       mpeg mpg;
    video/quicktime                                  mov;
    video/webm                                       webm;
    video/x-flv                                      flv;
    video/x-m4v                                      m4v;
    video/x-mng                                      mng;
    video/x-ms-asf                                   asx asf;
    video/x-ms-wmv                                   wmv;
    video/x-msvideo                                  avi;
}