1.1:介绍:
Nginx(发音同 engine x)是一款基于异步框架的轻量级/高性能的Web 服务器/反向代理服务器/缓存服务器/电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·赛索耶夫)所开发,最初供俄国大型网站Rambler.ru及搜寻引擎Rambler使用。
1.2、特点
优点 特点描述高并发量基于 epoll/kqueue 模型开发,支持高并发量,官方说其支持高达 5w 并发连接数的响应内存消耗少善于处理静态文件,相较于其他web(比如:apache),占用更少的内存及资源简单稳定配置简单(一个conf文件),运行简单(nginx命令),而且运行稳定模块化程度高功能模块插件化设计,可以自由配置相应的功能低成本Nginx的负载均衡功能很强大而且免费开源,相较于几十万的硬件负载均衡器成本相当低 缺点 特点描述动态处理差nginx善于处理静态文件,但是处理动态页面相较于Apache之类重量级的web软件能力稍欠缺2.1:软件安装:
# 使用命令安装 apt install nginx -y检查nginx运行端口:
python@ubuntu:~$ sudo netstat -tnulp | grep nginx [sudo] python 的密码: tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1620/nginx -g daemo tcp6 0 0 :::80 :::* LISTEN 1620/nginx -g daemoNginx启动,关闭,重启:
python@ubuntu:~$ sudo systemctl start nginx python@ubuntu:~$ sudo systemctl stop nginx python@ubuntu:~$ sudo systemctl restart nginxNginx服务的操作指令: 查看Nginx版本:
nginx -V :版本详细信息 nginx -v : 版本使用配置文件启动:
sudo nginx -c /etc/engix/engix.config退出
sudo nginx -s stop重启:
sudo nginx -s reload2.2: 默认配置信息:
nginx软件默认目录 目录描述工作目录/etc/nginx执行文件/usr/sbin/nginx日志目录/var/log/nginxweb目录/var/www/html/,首页文件是index.nginx-debian.html /usr/share/nginx/html/ 首页文件是index.html nginx默认配置文件 文件目录描述默认文件/etc/nginx/nginx.conf其他目录/etc/nginx/{sites-available/sites-enabled/conf.d} 文件结构 配置段描述信息全局配置段nginx的基础配置属性http配置段nginx的web服务基础配置属性server配置段项目或者应用配置属性location配置段url配置属性2.3: Nginx访问原理: 主配置文件中指定从配置文件。/etc/nginx/nginx.config 在从配置项配置:前端传过来的路径会和root拼接,这样找到服务器中的绝对路径。 $uri :指的是前端传过来的路径 $uri/ : 指的是如果找不到就路径后面再加一个/,然后找这个文件夹中的index.html文件。 =404: 指的是如果都找不到就报404错误。
3.1:Server配置: 3.1.1:配置样式:
server { listen 端口; server_name 主机名; ... }3.1.2:listen属性:
# 1:精确样式 listen 192.168.203.153:8000 # 2:只写ip则默认是80端口 listen 192.168.203.153 # 3: 所有ip都可以 listen 0.0.0.1:8000 # 4: 只写端口默认ip都可以 listen 8000 # 5: 默认地址---下面两个相同 listen default_server listen 127.0.0.1:803.1.2:server_name属性: 作用:当A主机只有一个开发的端口80,但是却存在多个网站,我们可以通过Server_name指定的域名,进行匹配后的下一步操作。
sever_name www.meiduo.site3.1.3: root 属性: 作用:定义Server相应请求的html文件所在路径。
root /var/www/html;3.1.4:index属性: 作用:定义响应请求后返回的文件名称或格式。
index index.html index.htm index.nginx-debian.html;3.2:Location配置:
location 匹配规则 匹配的字符 {规则} location / { root /var/www/html; # 指定响应请求的文件所在路径 index index.php index.html index.htm; # 指定响应请求的默认文件名称 try_files $uri $uri/ =404; # 如果root指定的路径下有查找的文件,就返回,否则报错 }3.2.1:匹配规则:
正则匹配 类型含义匹配方式优先级样式~ 或 !~普通正则-敏感 或 不敏感正则符号3location ~ .(jpe?g)$ {}~*或 !~普通正则-不敏感 或 敏感正则符号3location ~* .(jpe?g)$ {} 普通匹配 类型含义匹配方式优先级样式=/路径精确匹配前缀1location = /image {}^~优先匹配前缀2location ^~ /page {}@内部重定向前缀location @name {}空 /通用匹配前缀4location / {} 匹配示例常见示例:
location = / { location ~ \.(gif|jpg|png|js|css)$ { location !~* \.xhtml$ { #精确规则A #正则规则D #正则规则G } } } location = /login { location ~* \.png$ { location / { #精确规则B #正则规则E #通用规则H } } } location ^~ /static/ { location !~ \.xhtml$ { #优先规则C #正则规则F } }访问效果如下:
访问根目录/, 比如http://a.com/ 将匹配规则A
访问 http://a.com/login 将匹配规则B
访问 http://a.com/static/a.html 将匹配规则C
访问 http://a.com/a.gif, http://a.com/b.png 规则D和E均适合,按顺序优先使用规则D
访问 http://a.com/static/c.png 则优先匹配到规则C
访问 http://a.com/a.PNG 则匹配规则E,因为规则E不区分大小写。
访问 http://a.com/a.XHTML 使用规则F。
访问 http://a.com/category/id/1111 则最终匹配到规则H。
3.2.2:location的匹配规则:
(1)、多个location匹配字符都能匹配成功的情况下,选择优先级最高的location规则去处理!(2)、多个locaiton匹配字符都能匹配成功,且他们的优先级一样的情况下,选择先定义的location规则去处理!3.2.3:root 和 alias的区别:
root 表示 location 匹配内容的相对路径 alias 表示 一个绝对路径,而且必须以"/"结尾 root标志的绝对路径,不要"/"结尾规律:
(1)、alias指定目录的时候,是把alias目录和剩余未匹配路径拼接,得出静态文件绝对路径;(2)、root指定目录的时候,是把root目录和完整的请求路径拼接,得出静态文件绝对路径; 效果一: 效果二: location /img/ { location /img/ { alias /var/www/image/; root /var/www/image; } }效果一:访问http://localhost/img/,nginx找/var/www/image/目录下的文件
效果二:访问http://localhost/img/,nginx找/var/www/image/img/目录下的文件
注意:
一般情况下,在location /中配置root,在location /other中配置alias
配置的目录必须有nginx的访问权限,否则全部失效,不要设置为X用户的家目录。