Nginx网站模块及优化

本文详细介绍了Nginx的配置语法和优化技巧,包括server_name的匹配顺序、location匹配规则及其优先级、root与alias的使用、index指令、errorpage配置、静态资源的gzip压缩以及sendfile优化。此外,还讲解了如何解决gzip与sendfile的冲突、平滑升级Nginx、重定向与URL重写、访问认证以及变量和条件判断的使用。
摘要由CSDN通过智能技术生成

正则语法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EwUlESsc-1638861482155)(C:\Users\wang\Desktop\哔站随堂截图\正则表达式.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yuiavkLI-1638861482158)(C:\Users\wang\Desktop\哔站随堂截图\正则匹配server_name并返回域名.jpg)]

server_name匹配顺序

1精确匹配 www.itheima.com
2通配 ().itheima.com 没有括号
3通配 www.itheima.
(*)没有括号
4正则表达 ^www.\w+.com$

5默认的default_server ,没有指认就是第一个server

location 匹配优先级

精确>字符开头>正则匹配>通配(默认匹配)

= >^~ >~ ~* !~ !~*> /

location模糊匹配

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ptV82wpQ-1638861482159)(C:\Users\wang\Desktop\哔站随堂截图\location url定位.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lbVZkr7y-1638861482159)(C:\Users\wang\Desktop\哔站随堂截图\location匹配.jpg)]

location精确匹配

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O5HHI2un-1638861482159)(C:\Users\wang\Desktop\哔站随堂截图\精确匹配.jpg)]

location开启正则匹配

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mbbODcyJ-1638861482160)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211116192817.jpg)]

location /abcd 等同于 location ^~/abcd

但location /abcd 优先级低于 location ~^/abc\w+$

location ^~/abcd 位置如果在location ~^/abc\w+$前 匹配到就会停止匹配 开始返回结果,不像 location /abcd

站点目录下的root和alias

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9bdZLk5h-1638861482161)(C:\Users\wang\Desktop\哔站随堂截图\root alias 定位路径.png)]

index指定页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xmWm1Zxd-1638861482161)(C:\Users\wang\Desktop\哔站随堂截图\index指定页面.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isxKjrJL-1638861482161)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117142129.jpg)]

errorpage 三种配置方法[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GmgDBOoM-1638861482162)(C:\Users\wang\Desktop\哔站随堂截图\errorpage.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5sUZFnVq-1638861482163)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117144713.jpg)]

静态资源优化配置语法及具体配置

http块(三条配置都开,虽然后两条属于矛盾体,但在系统中已经兼容)

sendfile on; 加快传输

tcp_nodelay on; 有人就走

tcp_nopush on; 车满再走

gzip静态资源压缩模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6mBvZnMD-1638861482163)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117152934.jpg)]

1 gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/png;
或 gzip_types * ;#简单粗暴,适用于测试

2 gzip_comp_level 6; 压缩登记(1-9)1 速度快 9压缩效果好 建议取6为佳
3 gzip_buffers 4 64k; 一般可不设此项,采用系统默认即可,压缩缓冲区设定(数量)(大小)

4 gzip_http_version 1.1;压缩的http最低版本

5 gzip_disable “MSIE[1-6]\(斜杠).” 正则匹配 遇到老版本浏览器,自动关闭gzip功能,防止压缩了不被老版本浏览器识别,出现乱码

6 gzip_min_length 1k:用于设置允许压缩的页面最小字节数;
7 gzip_proxied off;反向代理时,对返回客户端的内容 不予压缩。

可以使用include 做功能配置,加载进主配使用
如下:在 conf/新建功能子配nginx_gzip.conf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Vc2Hz3J-1638861482163)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117161843.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-76UslPiP-1638861482164)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117161927.jpg)]

如何解决gzip与sendfile冲突
sendfile调用文件不经过应用程序
解决思路:提前压缩,sendfile调用压缩文件

nginx平滑升级(只能是源码安装情况下)

整体软件平滑升级

源码安装新版本至其他目录 将二进制执行nginx 复制至现sbin目录下(原nginx重命名备份下)

查下进程号

kill -USR2 老的pid号 进行平滑升级

需要新增模块

gzip_static_module添加步骤:

1 nginx -V 查看配置
2 进入程序目录
二进制目录改名 /usr/local/nginx/sbin
mv nginx nginxold
3 进入安装目录 /opt/nginx-1.12.0
make clean
4 配置
./configure 第一步查出的配置 --with-http_gzip_static_module
5 编译
make
6 在./nginx-1.12.0/objs下
cp nginx /usr/local/nginx/sbin
7 进入安装目录下 make upgrade
8 nginx -t 检查
nginx -s reload  重载配置
9 nginx -V 查看最新配置

站点目录下 对文件手动压缩

静态资源缓存处理

这里提及的缓存一般理解为 浏览器缓存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s1wU9Ij6-1638861482164)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117170218.jpg)]

location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {
            root   html;
            expires 1d;
        }

防盗链

[root@www html]# cd /usr/local/nginx/conf
[root@www conf]# vi nginx.conf
location ~* \.(jpg|gif|swf)$ {
       valid_referers none blocked  *.kgc.com kgc.com;
            if ( $invalid_referer ) {
                           rewrite ^/ http://www.kgc.com/error.png;
                           }

~* \.(jpg|gif|swf)$:这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的
文件
Valid_referers:设置信任的网站,可以正常使用图片。
None :浏览器中 referer 为空的情况,就是直接在浏览器访问图片。
Blocked :referer 不为空的情况 ,但是值被代理或防火墙删除了,这些值不以 http://或
https://开头。
后面的网址或者域名:referer 中包含相关字符串的网址。
If 语句:如果链接的来源域名不在 valid_referers 所列出的列表中,$invalid_referer 为
1,则执行后面的操作,即进行重写或返回 403 页面。

rewrite url重写

url分为静态地址(index.html)和动态地址(?&hdkahk)

rewrite定义及作用

rewrite的常见应用场景就是动态地址伪静态化
好处:1 静态资源已被搜索引擎shoulu
2 安全性 动态地址会暴露更多隐私信息 伪静态化则不会

​ 3 地址跳转 360buy.com >> jd.com

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IswwGbVS-1638861482164)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211119151654.jpg)]

重定向

注:指定模式 模糊匹配 abc这个目录在站点中目录下不存在,也不影响重定向结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2LSZr4sw-1638861482165)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211119152654.jpg)]

permanent

翻译为:永久的,永恒的 (实际会比不加的时候,多一次访问过程,不加permanent 只是服务器内部转化)

添加上述参数后会改变url为新url

例:访问360buy.com 地址栏也会变为jd.com

分组位参重定向

url地址中2016/后的路径 会被附加至2017之后,从而完成重定向

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xJa9Z47B-1638861482165)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211119154943.jpg)]

if 重定向

完整url组成:协议主机文件参数片段

​ https:// blog.csdn.net /ITwang1 ?spm=1000.21
内置变量:$protocol $host $ directory $args

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AjBttENJ-1638861482165)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211119160550.jpg)]

注:上述案例涉及域名,需要域名解析配合

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DTLidY8J-1638861482166)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211119162343.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zXxC5H6O-1638861482166)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211119170152.jpg)]

上述案例存在死循环,如果输入www.qianfeng.com 转变为www.qianfeng.com/www不是我们想看到的结果

加一个if判断在前面if ( KaTeX parse error: Can't use function '\.' in math mode at position 14: host ~* "^www\̲.̲qianfeng\.com" ) {

​ break;

}

break last

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vggNeWs2-1638861482167)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211119173145.jpg)]

1变量名
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gZxPkEPO-1638861482167)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117193640.jpg)]

变量为空或0 condition(条件)为假

内置变量$args url 后加?+任意非零字符 都为真

2 =和!=

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q5ewyW8f-1638861482167)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117194108.jpg)]

3 正则匹配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DAmRakLZ-1638861482168)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117195146.jpg)]

4 是否存在

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RuAsK2oe-1638861482168)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117195106.jpg)]

set

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V7k9mb4s-1638861482168)(C:\Users\wang\Desktop\哔站随堂截图\QQ截图20211117190955.jpg)]

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

if

访问认证

在server 或location 块 定义认证模块 在server块配置 作用于 整个站点 在location 配置 可以细化至具体页面 如果是location模糊匹配 也是作用于全站

#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

if





### 访问认证

在server 或location 块 定义认证模块  在server块配置 作用于 整个站点 在location 配置 可以细化至具体页面 如果是location模糊匹配 也是作用于全站

包括认证模块和白名单密码文件路径 涉及htpasswd -c 命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值