文档有点长,建议阅读韶光10分钟。
开启gzip功能,能够将前端传输的数据大小压缩一半乃至更少,降落了带宽哀求,让访问更轻、更快,体验很舒畅:gzip on; #开启
gzip_buffers 8 16k;#超过128k的文件不压缩

gzip_comp_level 2;#压缩级别,越大压缩越好,韶光也越长,1~10
gzip_min_length 512;#大于512B才压缩
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;#在Header里增加“Vary:Accept-Encoding”
gzip_disable "MSIE [1-6]\.";#IE6不压缩
location语法= 开头表示精确匹配
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此要求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(把稳是空格)
~ 开头表示区分大小写的正则匹配
~ 开头表示不区分大小写的正则匹配
!~和!~ 分别为区分大小写不匹配及不区分大小写不匹配的正则
/ 用户所利用的代理(一样平常为浏览器)
$http_x_forwarded_for 可以记录客户端IP,通过代理做事器来记录客户真个ip地址
$http_referer 以记录用户是从哪个链接访问过来的
规则匹配的优先级:
1、 先校验 =(精准命中),如果命中,立即返回结果并结束解析过程。
2、 校验普通命中,如果有多个命中,“记录”下来“最长”的命中结果(记录但不绝止,最长的为准)。
3、 连续校验正则表达式的解析结果,按配置里的正则表达式顺序为准,由上至下开始匹配,一旦匹配成功到,立即返回结果,并结束解析过程。
4、 普通命中无顺序,是由于按命中的是非来确定。正则命中,要按照顺序,由于是从前入今后命中的。
比较常见的配置,带实例:
一、http 普通、静态的配置
这样如果访问http://localhost 就会默认访问到根目录webroot目录下面的index.html,如果一个网站只是静态页面的话,那么就可以通过这种办法来实现支配。
server { listen 80; server_name localhost; client_max_body_size 1024M; location / { root /webroot;//思路:通过/将所有的要求,转发给root处理 index index.html; }}
二、反向代理
localhost的时候,就相称于访问localhost:8080了
server { listen 80; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host:$server_port; //思路:通过/,将所有的要求,转发给第3方处理 }}
反向代理的浸染很多。
负载均衡、虚拟主机等,都基于反向代理实现,当然反向代理的功能也不仅仅是这些。
3、Redirect重定向语法
server { listen 80; server_name start.igrow.cn; index index.html index.php; root html; if ($http_host !~ "^star\.igrow\.cn$" { rewrite ^(.) http://www redirect; }}
4、防盗链语法实现
location ~ \.(gif|jpg|png|bmp)$ { valid_referers none blocked .ttlsa.com server_names ~\.google\. ~\.baidu\.; if ($invalid_referer) { return 403; }}
5、根据文件类型设置过期韶光
location ~ \.(js|css|jpg|jpeg|gif|png|swf)$ { if (-f $request_filename) { //只能是文件,由于这用-f判断了 expires 1h; break; }}
6、设置图片缓存/过期韶光
7、禁止访问前端某个目录
location ~ \.(txt|doc)${root /data/www/wwwroot/linuxtone/test; #所有用户都禁止访问这个目录deny all;}
8、隐蔽nginx版本号
通过你所用的nginx版本,找其漏洞,进行攻击你
在http中添加该配置:server_tokens off;
9、配置https的步骤
1、去网上(阿里云或者腾讯云)申请免费证书
2、下载免费证书放到/usr/local/nginx目录下(便是和conf同级,nginx.conf默认的配置文件的上一级)
4、在vhost目录下加入配置文件
server { listen 443; server_name lampol.edu0532.cn; #改域名 ssl on; root /home/www/xcxtp5/public; #改项目路径 ssl_certificate ../certbo/1523694051089.pem; #改证书路径 ssl_certificate_key ../certbo/1523694051089.key; #改私钥路径 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { index index.html index.htm index.php; autoindex on; # 伪静态配置 if (!-e $request_filename) { rewrite ^(.)$ /index.php?s=$1 last; break; } } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; }}
10、动静分离
设计:动态、静态的文件,要求时匹配不同的目录
当访问gif,jpeg时 直接访问/webroot;,正则自行配置
server { listen 80; server_name localhost; location / { root /webroot; index index.html; } # 所有静态要求都由nginx处理,存放目录为html location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ { root /webroot; } # 所有动态要求都转发给tomcat处理 location ~ .(jsp|do)$ { proxy_pass http://ip:port; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /webroot; } }