一、nginx的下载安装
去nginx官网(https://nginx.org/en/download.html)下载zip包,解压到本地即可。
二、Windows下Nginx的启动、停止等命令
启动:start nginx
停止:nginx.exe -s stop 或 nginx.exe -s quit
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
重新载入:nginx.exe -s reload 主要是修改了配置文件,重新载入使配置生效
重新打开日志文件:nginx.exe -s reopen
查看Nginx版本:nginx -v
三、静态资源部署以及访问
假设静态资源文件放在/static/testng/testview/文件夹下
我们请求url为:http://localhost//testng/testview/a.html
nginx可以通过虚拟目录alias和root目录两种方式来访问静态资源
location /testng/testview {
root static;
index index.html index.htm;
}
location /testng/testview {
alias static/testng/testview/;
index index.html index.htm;
}
以上两种方式均可访问到我们的静态资源,区别如下:
1、root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的,换句话说就是root响应的路径:配置的路径(root指向的路径)+完整访问路径(location的路径)+静态文件
2、alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的,换句话说就是alias响应的路径:配置路径+静态文件(去除location中配置的路径)
3、使用alias标签的目录块中不能使用rewrite的break(具体原因不明);另外,alias指定的目录后面必须要加上"/"符号!!
4、alias虚拟目录配置中,location匹配的path目录如果后面不带"/",那么访问的url地址中这个path目录后面加不加"/"不影响访问,访问时它会自动加上"/";但是如果location匹配的path目录后面加上"/",那么访问的url地址中这个path目录必须要加上"/",访问时它不会自动加上"/"。如果不加上"/",访问就会失败!
5、root目录配置中,location匹配的path目录后面带不带"/",都不会影响访问。
所以,一般情况下,在nginx配置中的良好习惯是:
1)在location /中配置root目录;
2)在location /path中配置alias虚拟目录。
四、接口转发配置
比如说,我们的客户端访问地址是:http://localhost:8080/testng/testApi,根据目录testng实现代理转发到后台接口
1. location、proxy_pass都不加斜杠
location /testng {
proxy_pass http://192.168.0.100:9090;
}
实际访问代理地址:http://192.168.0.100:9090/testng/testApi
2. location加斜杠,proxy_pass不加斜杠
location /testng/ {
proxy_pass http://192.168.0.100:9090;
}
实际访问代理地址:http://192.168.0.100:9090/testng/testApi
3. location不加斜杠,proxy_pass加斜杠
location /testng {
proxy_pass http://192.168.0.100:9090/;
}
实际访问代理地址:http://192.168.0.100:9090//testApi
4. location、proxy_pass都加斜杠
location /testng/ {
proxy_pass http://192.168.0.100:9090/;
}
实际访问代理地址:http://192.168.0.100:9090/testApi
总结
1. proxy_pass代理地址端口后无任何字符,转发后地址:代理地址+访问URL目录部分
2. proxy_pass代理地址端口后有目录(包括 / ),转发后地址:代理地址+访问URL目录部分去除location匹配目录(示例中的"testng"或"testng/")