Nginx作为tomcat的前段反向代理:
在实际业务环境中,用户是直接通过域名访问,基于协议一般是http、https等。默认tomcat运行在8080端口。一般会通过前端服务器反向代理到后端的tomcat的方式,来实现用户可以通过域名访问tomcat的webapp。
tomcat在解析静态资源没有Nginx快。
动静分离:动态页面的请求交由后端处理(tomcat+java),静态页面直接返回。
实现配置:
配置文件参考:
server{listen 80;server_name tomcat.devops.com;#和tomcat的host配置一致root /usr/local/tomcat/webapps/devops/ROOT;#静态不需要进行转发location ~ \.(html|css|js|png|jpg|jpeg)$ {#default_type text/plain;#echo 'html';#alias /;#root /usr/local/tomcat/webapps/devops/ROOT;}#其他识别不是静态资源的,统统发送到后端tomcatlocation / {proxy_pass http://127.0.0.1:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;#default_type text/plain;#echo $host;#echo $remote_addr;#echo $proxy_add_x_forwarded_for;}}
有时间过来还是要将nginx的配置再复习,再练习。
Nginx单独访问静态页面,出现403的问题:
分析:没有读取权限。
解决方案:
当Nginx和Tomcat网站根目录一致的情况,注意Nginx是否有权限读到tomcat网站目录的权限。
一般性解决方案网站目录文件夹,赋予一个公共用户www。
shell > cd /usr/local/tomcat
shell > chown -R www:www webapps
tomcat是root启动的。那配置www用户和用户组,不影响tomcat的访问。
nginx启动的是www用户启动的。
所以给nginx配置用户和用户组,就可以解决这个问题。
再粘贴下老师的配置文件。
这个是动静分离。
负载均衡:降低单例压力,提高服务器并发性。
Nginx负载均衡:
随着业务的发展,单实例服务已经不能满足业务使用需要。
pv 页面访问数量
qps 每秒查询次数 并发量
DAU 每日活跃用户数
单实例无法满足,扩容为多实例
常见的业务运行方式:
单实例单应用 一个tomcat一个webapps
单实例多应用 一个tomcat多个webapps host
多实例单应用 多个tomcat同一个webapps
多实例实现方式:
1)多台服务器一个运行一个实例。(性能好)也就是一个服务器上安装一个tomcat。性能好。
2)单台服务器运行多个实例(监听不同端口,性价比高)伪集群。一个服务器上安装多个tomcat。
多实例多应用:
server04 nginx负载均衡
server01 tomcat1
server03 tomcat
业务流程示意图:
1)复制虚拟机,多实例。
两台tomcat里项目里的内容要一致
在server03上配置和server01一样的实现:
1>建立项目文件夹目录,绑定host主机域名
2>nginx做反向代理
配置nginx负载均衡:
在server04上进行配置:
upstream tomcat {#ip_hash;server 192.168.17.102:80;server 192.168.17.101:80;}server {listen 80;server_name tomcat.devops.com;location / {proxy_pass http://tomcat;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}}
以上看nginx,人家的业务需求,我们更加好理解些。
nginx的配置文件,还需要再好好理解。
location ~ 的概念。