如果只是使用平台提供的配置文件,请直接跳过第三章或者移步(http://blog.csdn.net/ZHBR_F1/article/details/72667451)
平台使用nginx主要是使用其核心的http模块,nginx做的工作很简单,就是接收到http请求,然后去搜索配置文件里的Location Block(以location指令包装的指令块)进行匹配,根据匹配到的location去完成相应的操作,这些操作一般就是把http请求进行重定向转发(例如将访问192.168.1.34的请求转发到192.168.2.55去访问),或者是映射到具体的硬盘目录下(例如访问192.168.1.34的资源请求转到本地“C:/workspace/”下去请求资源)。具体流程如下图所示:
直接把nginx的环境包放到硬盘里就可以了(说的是windows,其他操作系统百度一下就好了)
nginx命令 | 执行命令的作用 |
---|---|
start nginx | 开启nginx |
nginx -s reload | nginx重载 |
nginx -s stop | nginx强制关闭 |
nginx -s quit | nginx平稳关闭 |
nginx主要作用:作为一个代理服务器,用来代替之前的tomcat服务器。当请求为静态资源的时候通过nginx代理到本地,而将服务代理到远程服务器。
当请求静态资源的时候还考虑到了扩展模块以及”开发环境“和”生产环境“,根据nginx的配置去匹配不同的目录:先去查找扩展目录中是否有对应的文件存在,如果没有,那么根据配置区分”开发环境“或者”生产环境“,然后去请求不同的目录
以 ‘#’ 开头的一行为注释,只有单行注释
server是一切的开始,代表一个代理的出现,里边两大配置项——listen(监听的端口)和server_name(监听的地址),里边还包括了location和其他配置项。
当存在多个server的时候,nginx获取到的请求都将会去匹配这些server(去匹配其中的listen和server_name),具体匹配规则请参考http://mushme.iteye.com/blog/1774097
server_name 用来配置监听的地址
server_name接受普通字符串,可以是IP地址,也可以是域名,也可以是“localhost”例如:
server_name www.example.com;
server_name 127.0.0.1;
server_name localhost;
也可使用通配符或者正则来配置
server_name *.example.com
server_name www.example.*
# server_name在后面加上 ‘~’ 可以使用正则去匹配
server_name~ ^www\.example\.com$ ;
server_name配置在server块里边,每个server块可以配置最多一个server_name
listen 用来配置监听的端口号
listen有以下三种形式,用来定义监听的端口,一般使用第二种
## listen address[:port];
listen 127.0.0.1:8088;
## listen port;
listen 8088;
## listen unix:path;
location是nginx的精华,nginx就是通过拦截到的请求去对配置好的location块(location block)进行请求代理的。
location是用来具体配置代理路径的,具体格式如下:
location [=|~|~*|^~|@] /uri/ { … }
被代理的url去对location后边的字符串(或正则)进行匹配,根据一定的规则选择走哪个location,以下是匹配规则,这里还是放了一个大神的博客链接,请参考他的博客去了解nginx中location的书写规则:http://blog.csdn.net/tjcyjd/article/details/50897959
看完大神的博客你可能又跳回来从这里接着看了,接下来讲到的四个指令则是nginx代理转发请求的基本命令
alias和root是将请求代理到本地的指令,也就是如果可以把请求发送到你的硬盘里去获取资源,这个指令可以代理前端的静态资源。
alias和root是有区别的,请参看下面的例子(假设监听的地址端口为192.168.22.23:8009,那么所有请求192.168.22.23:8009的都会被nginx代理到,配置一个location为“/request_path/image/”,那么所有请求“192.168.22.23:8009/request_path/image/”的都会匹配这个lcoation块)
# 如下
# 当客户端请求"192.168.22.23:8009/request_path/image/img1.png"的时候
# nginx会代理到"D:/workspace/local_path/request_path/image/img1.png"
location /request_path/image/ {
root D:/workspace/local_path/;
}
# 如下
# 当客户端请求"192.168.22.23:8009/request_path/image/img1.png"的时候
# nginx会代理到"D:/workspace/local_path/img1.png"
location /request_path/image/ {
alias D:/workspace/local_path/;
}
这下alias和root的区别明显了。
proxy_pass是用来对请求进行转发的,这个一般用来代理后台服务,就是把请求进行重定向,看下面例子(沿用上边模拟的情境)
# 重定向
# 现在所有的访问“192.168.22.23:8009”
# 都会跳到“192.168.22.88:8088”上去。
location ~ /* {
proxy_pass http://192.168.22.88:8088
}
这也是重定向的指令,是用来重写请求路径的,这里还是附上大神的博客http://www.nginx.cn/216.html
用来设置变量的,格式为:set 变量名 变量值,nginx中的变量都是以$开头的。
# $name变量就是“ZhangSan”这个字符串了
set $name "ZhangSan"
if指令是用来做判断的,nginx中还有好多内置的变量(比如说$request_filename、$request_uri
)
平台提供的示例配置文件的修改和使用请参考:Nginx的配置和使用。