欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > Nginx学习笔记

Nginx学习笔记

2024/12/22 0:18:59 来源:https://blog.csdn.net/weixin_44874327/article/details/144418272  浏览:    关键词:Nginx学习笔记

Nginx

  • 有点忘了 自己写个笔记回顾一下

基本使用

启动
./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭 退出前完成请求 连接
./nginx -s reload 重新加载配置
防火墙
firewall-cmd --state  查看防火墙状态
systemctl stop firewalld.service  停止firewall
systemctl disable firewalld.service    禁止firewall开机启动
firewall-cmd --zone=public --add-port=80/tcp --permanent   放行端口
firewall-cmd --reload   重启防火墙
目录结构

nginx/conf 配置文件
/html 默认页

运行流程

请求->nginx->work 进程去处理

简易配置文件

http -> server(一个主机)->location(匹配一段url)

worker_processes  1; #允许进程数量,建议设置为cpu核心数或者auto自动检测,注意Windows服务器上虽然可以启动多个processes,但是实际只会用其中一个
events {#单个进程最大连接数(最大连接数=连接数*进程数)#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。worker_connections  1024;
}
http {#文件扩展名与文件类型映射表(是conf目录下的一个文件)  include       mime.types; # 文件类型匹配#默认文件类型,如果mime.types预先定义的类型没匹配上,默认使用二进制流的方式传输default_type  application/octet-stream;#sendfile指令指定nginx是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度。sendfile        on;#长连接超时时间,单位是秒 保持长连接时间keepalive_timeout  65;#虚拟主机的配置server {#监听端口listen       80;#域名,可以有多个,用空格隔开server_name  localhost;#配置根目录以及默认页面location / {root   html;index  index.html index.htm;}#出错页面配置error_page   500 502 503 504  /50x.html;#/50x.html文件所在位置location = /50x.html {root   html;}}
}
虚拟主机 server
#虚拟主机的配置server {#监听端口listen       80;#域名,可以有多个,用空格隔开server_name  localhost;#配置根目录以及默认页面location / {root   html; #这个是根目录 这个站点文件的根目录index  index.html index.htm;}#出错页面配置error_page   500 502 503 504  /50x.html;#/50x.html文件所在位置location = /50x.html {root   html;}}                
servername 匹配
    • 就是通配符
  • 也可以使用正则表达式
  • server_name www.xzj520520.*;
反向代理
  • nginx和tomcat形成内网 就是反向代理 是别动的去访问 必须通过nginx才能访问
  • nginx限制了流量
location / {proxy_pass http://www.baidu.com  #如果有了反向代理  下面就是会失效  地址栏不会变但是页面会变 不支持https的反向代理#     root   html; #这个是根目录 这个站点文件的根目录#    index  index.html index.htm;}
负载均衡
worker_processes  1; #允许进程数量,建议设置为cpu核心数或者auto自动检测,注意Windows服务器上虽然可以启动多个processes,但是实际只会用其中一个events {#单个进程最大连接数(最大连接数=连接数*进程数)#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。worker_connections  1024;
}http {#文件扩展名与文件类型映射表(是conf目录下的一个文件)include       mime.types;#默认文件类型,如果mime.types预先定义的类型没匹配上,默认使用二进制流的方式传输default_type  application/octet-stream;#sendfile指令指定nginx是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度。sendfile        on;#长连接超时时间,单位是秒keepalive_timeout  65;#定义一组服务器 weight 就是权重 backup 就是备用机
upstream httpds{server 192.168.8.102:80 weight=8;server 192.168.8.103:80 backup;
}#虚拟主机的配置server {#监听端口listen       80;#域名,可以有多个,用空格隔开server_name  test80.xzj520520.cn;#配置根目录以及默认页面location / {proxy_pass http://httpds;# root   /www/test80;# index  index.html index.htm;}#出错页面配置error_page   500 502 503 504  /50x.html;#/50x.html文件所在位置location = /50x.html {root   html;}    }
}

负载均衡

  • ip_hash
    根据客户端的ip地址转发同一台服务器,可以保持会话,但是很少用这种方式去保持会话,例如我们当前正在使用wifi访问,当切换成手机信号访问时,会话就不保持了。
  • least_conn
    最少连接访问,优先访问连接最少的那一台服务器,这种方式也很少使用,因为连接少,可能是由于该服务器配置较低,刚开始赋予的权重较低。
  • url_hash(需要第三方插件)
    根据用户访问的url定向转发请求,不同的url转发到不同的服务器进行处理(定向流量转发)。
  • fair(需要第三方插件)
    根据后端服务器响应时间转发请求,这种方式也很少使用,因为容易造成流量倾斜,给某一台服务器压垮。

动静分离

  • 就是将静态资源放在 nginx服务器
#user  nobody;
worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {proxy_pass http://192.168.8.101:8080;}location /images {root   /www/resources;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

location 的配置规则

常见的Nginx正则表达式

^ :匹配输入字符串的起始位置
$ :匹配输入字符串的结束位置
* :匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”
+ :匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o”
? :匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,”?”等效于”{0,1}”
. :匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式
\ :将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$”
\d :匹配纯数字
{n} :重复 n 次
{n,} :重复 n 次或更多次
{n,m} :重复 n 到 m 次
[] :定义匹配的字符范围
[c] :匹配单个字符 c
[a-z] :匹配 a-z 小写字母的任意一个
[a-zA-Z0-9] :匹配所有大小写字母或数字
() :表达式的开始和结束位置
| :或运算符  //例(js|img|css)

location正则:

//location大致可以分为三类
精准匹配:location = /{}
一般匹配:location /{}
正则匹配:location ~/{}
//location常用的匹配规则:
= :进行普通字符精确匹配,也就是完全匹配。
^~ :表示前缀字符串匹配(不是正则匹配,需要使用字符串),如果匹配成功,则不再匹配其它 location。
~ :区分大小写的匹配(需要使用正则表达式)。
~* :不区分大小写的匹配(需要使用正则表达式)。
!~ :区分大小写的匹配取非(需要使用正则表达式)。
!~* :不区分大小写的匹配取非(需要使用正则表达式)。
//优先级
首先精确匹配 =
其次前缀匹配 ^~
其次是按文件中顺序的正则匹配 ~或~*
然后匹配不带任何修饰的前缀匹配
最后是交给 / 通用匹配
  • 正则location > 普通location 匹配为普通的后回去匹配正则的
location /images {root   /www/resources;index  index.html index.htm;}-》》》》》》/www/resources/images

URL rewrite

  • 就是重写一个路由
location /download/ {rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra  break;return  403;默认类型
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com