文章目录
一、Nginx介绍
Nginx(“engine x”)是一个高性能的HTTP和反向代理服务器
具有内存占用少,启动极快,高并发能力强的优点、在互联网项目中广泛应用。
一台nginx能承受大约5万个并发连接数。
中国Nginx官网:https://www.nginx-cn.net/
GitHub地址:https://github.com/nginxinc/
二、正向代理
代理就是代理服务器介于用户客户端和目标服务器之间,
正向代理就是用户指定想要获取的目标内容,通过客户端先向代理服务器发送请求,再由代理服务器发送到目标服务器,随后将获得的内容返回用户客户端。
正向代理的情况下,客户端需要知道正向代理服务器的IP地址,还有代理程序的端口才可使用。
正向代理是代理用户客户端,为客户端发送请求,使真实的用户客户端对服务器不可见。
三、反向代理
反向代理刚好与正向代理相反。
对于反向代理,客户端对代理是无感知的,
因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,
暴露的是代理服务器地址,隐藏了真实服务器IP地址。
客户端想访问tomcat服务器,只需要访问ww.baidu.com。对真实的服务器IP是隐藏的
四、实例演示
1、反向代理实例一(反向代理,访问www.123.com)
步骤一:修改主机映射“C:\Windows\System32\drivers\etc\hosts”
步骤二:修改Nginx中的配置文件并启动
发现
报错
注意:我的nginx和tomcat都在Docker中,容器之间是相互隔离的。
127.0.0.1访问的nginx容器内部的8080端口,而此容器并没有tomcat所以肯定会报错
注意:我的tomcat8080容器已经映射到虚拟机的8080端口,所以进行以下更改:
可以看到此时访问成功
但是输入www.123.com(已经设置hosts端口映射)访问却
报错
解决方法:关闭windows本地代理
访问成功
2、反向代理实例二(使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中)
步骤一:为了区分Tomcat,对欢迎页面进行小改,修改webapps/ROOT/index.jsp
同理8081端口也是一样操作
步骤二:修改Nginx配置文件并重新启动Nginx
这里注意:
proxy_pass http://192.168.31.238:8080/;
proxy_pass最后面有斜杠”/”,此时通过浏览器请求http://http://192.168.31.238/edu/,那么实际访问的地址就是 http://192.168.31.238:8080,会将/edu抛弃的,
proxy_pass http://192.168.31.238:8080;
说明:proxy_pass最后面没有斜杠”/”,此时通过浏览器请求http://192.168.31.238/vod/,
那么实际访问的地址就是 http://192.168.31.238/vod/,会将匹配路径/vod一起加过去
注意:路径/usr/share/nginx/html/vod文件夹下需要有html文件才可以正常访问
步骤三:测试结果(成功)
五、nginx之location规则
- = 开头表示精确匹配(优先级最高)
- ^~ 开头表示uri以某个常规字符串开头,理解为匹配url路径即可(非正则)
- ~ 开头表示区分大小写的正则匹配
- ~* 开头表示不区分大小写的正则匹配
- !~ 和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则
- / 通用匹配,任何请求都会匹配到
更多location实例可以参考:nginx之location详解