Nginx部署自己的项目

Nginx部署自己的项目

开发步骤:

  • 第一步更改tomcat的端口号

    在slave01虚拟机中更改端口号 192.168.68.130

    69 <Connector port=“8081” protocol=“HTTP/1.1”
    70 connectionTimeout=“20000”
    71 redirectPort=“8443” />

    在master虚拟机中更改端口号 192.168.68.129

    <Connector port=“8082” protocol=“HTTP/1.1”
    70 connectionTimeout=“20000”
    71 redirectPort=“8443” />

  • 第二步:在server.xml文件中添加部署项目的虚拟目录

  • 第三步:配置nginx的主配置文件

    upstream tomcatServer01{

    ​ server 192.168.68.129:8082 weight = 3;

    ​ server 192.168.68.130:8081 weight = 1;

    }

    server {

    ​ listen 80;

    ​ server_name zhiyou200_java;

    ​ location / {

    ​ proxy_pass http://tomcatServer01;

    ​ index /;

    ​ }

    }

  • 重启nginx服务器

    cd /usr/local/nginx/sbin

    ./nginx -s reload

Nginx集群的其他配置

  ```java

upstream tomcatServer1{ # 代理名字 名字任意
server 192.168.68.129:8082 weight=3 ; # weight 权重 server配置nginx转发应用服务器所在的虚拟主机的ip地址
server 192.168.68.130:8081 ; # 让nginx关联另一台tomcat应用服务器
# server 192.168.68.131:8083 down; # 表示当前的server应用服务器不参与负载均衡
# server 192.168.68.132:8084 backup; # 其他所有的非backup机器或者是down或者忙时的服务器请求backup服务器
# 被backup标记的应用服务器压力最轻
server 192.168.68.133:8085 max_fail = 3 ; # 允许请求失败的最大次数 默认值为1 默认情况下两秒钟检测一次
# 当失败请求超过最大次数,返回 proxy_next_upstream模块定定义的错误
# server 192.168.134:8086 fail_timeout = 1000; # 请求连接的超时时间 max_fail次失败后,暂停的时间为准
}

  ```

Nginx负载均衡环境中的Session共享问题

web服务器通过nginx连接起来,这样同一个IP访问同一个页面有可能会被分发到不同的应用服务器上面,

如果session不同步,就会出现session在多台服务器中不共享的问题。

解决方案:
  • 第一种解决方案: 使用session借助cookie进行缓存:这种方式实现起来很容易,但是如果客户端把cookie禁掉了

    那么就会出现session不同步了,cookie的网络安全性较低,里面的值是可以被伪造的。

  • 第二种解决方案: 使用数据库,把 session值存储进数据库中,如我们的mysql中

    ​ 虽然它实现了session同步,会加大对数据库的IO操作,增加数据库的负担,而且读写数据库效率较低

  • 第三种解决方案: 往缓存中放 ,把session值存储在memcache或者redis中

    ​ memcache也可以做分布式

    ​ 虽然它也实现了session同步,如果memcahe把内存划分成很多种规格的存储块,会产生很多个内存碎片,

    ​ 如果存储块不足,就会导致内存溢出现象。

  • ​ 第四种解决方案: 使用nginx的自带的 ip_hash 能够解决将某个IP的请求定向到同一台后端,这样一来这个IP下的 某个客户端和某个后端就建立起了稳定的连接,session实现同步

    upstream tomcatServer1{ # 代理名字 名字任意
    ip_hash;
    server 192.168.68.129:8082 weight=3 ; # weight 权重 server配置nginx转发应用服务器所在的虚拟主机 的ip地址
    server 192.168.68.130:8081 ; # 让nginx关联另一台tomcat应用服务器

    ​ }

    没办法实现分流

  • 第五种解决方案: upstream_hash

    可以解决ip_hash的一些问题,可以使用upstream_hash这个第三个模块,这个模块在大多数情况下是用作url_hash,也可以实现session共享

上一篇:Nginx做负载均衡,以及方式


下一篇:Nginx-Nginx原理到配置