Nginx介绍
一、介绍
Nginx是一个十分轻量级并且高性能HTTP和反向代理服务器,同样也是一个IMAP/POP3/SMTP代理服务器。
二、特性
HTTP服务器
反向代理服务器
简单的负载均衡和容错
支持热部署
三、nginx模块
nginx模块一般分为三类:
handler:负责处理客户端请求并产生待响应内容。
filter:负责对输出的内容进行处理,可以对输出进行修改。
upstream:实现反向代理功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端。upstream模块是一种特殊的handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。
四、ubuntu安装nginx
这种方式安装的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
通过这种方式安装的,会自动创建服务,会自动在/etc/init.d/nginx
新建服务脚本,然后就可以使用sudo service nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}
的命令启动。
可以再/var/log/nginx/
下查看日志,如果端口80被占用,就更改/etc/nginx/sites-enabled/default
文件,将下面的两个80改成你想要的的端口,然后重新启动。
五、配置nginx作为http服务器
1. 配置项目的conf文件
在/etc/nginx/nginx.conf
中可以看到自定义配置文件的路径:
在conf.d目录下新建文件timeline.conf
,写入配置内容
重启nginxsudo service nginx restart
2. 通过浏览器访问
http://bonnenuit.vip:8080/ 如果显示正常,则说明配置成功。
3. 遇到的问题
1. 报错"server" directive is not allowed here in /etc/nginx/myconf/timeline.conf:3
出现这个错误的原因是include /etc/nginx/xxx/*.conf;
没有写在http标签下,因为server只能出现在http下面。
2. 访问url的时候报错403 forbidden
查询/var/log/nginx/error.log
,具体的报错日志为:
出现这个原因是因为nginx的worker进程无法访问静态资源文件,因为worker进程的用户和资源的所有者是不一样的,我们需要更改配置文件nginx.conf
:
然后重启nginx就可以解决。
六、配置nginx作为反向代理服务器
1. 配置conf文件
在conf.d目录下timeline.conf
中,新增配置内容:
2. 通过浏览器访问
http://bonnenuit.vip:8080/proxy/ 如果显示正常,则说明配置成功。
七、配置nginx作为文件服务器
浏览器访问:
八、location匹配url规则
看下location的语法:
location 后面跟可选的修饰符,后面就是要匹配的字符,花括号是对应的配置。
修饰符含义:
=
表示精确匹配,只有请求的url路径与后面的字符串完全相等时,才会命中。
~
表示该规则是使用正则定义的,区分大小写
~*
表示该规则是使用正则定义的,不区分大小写
^~
表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找
具体的匹配过程如下:
首先先检查使用前缀字符定义的location,选择最长匹配的项并记录下来。
如果找到了精确匹配的location,也就是使用了
=
修饰符的location,结束查找,使用它的配置。然后按顺序查找使用正则定义的location,如果匹配则停止查找,使用它定义的配置。
如果没有匹配的正则location,则使用前面记录的最长匹配前缀字符location。
基于以上的匹配过程,我们可以得到以下两点启示:
使用正则定义的location在配置文件中出现的顺序很重要。因为找到第一个匹配的正则后,查找就停止了,后面定义的正则就是再匹配也没有机会了。
使用精确匹配可以提高查找的速度。例如经常请求
/
的话,可以使用=
来定义location。
例子:
参考:
https://www.cnblogs.com/EasonJim/p/7806879.html
Last updated
Was this helpful?