• 在centos7下搭建nginx环境,并配置负载均衡,最终能达到通过域名直接访问的目的


    1.关于nginx:个人理解的nginx它的主要用途就是负载均衡,当然可能还有其他一些功能可能我们不长用到,我们通过nginx可以干什么呢?为什么要引入它呢?原因是当有高并发访问服务器时,服务器可能会垮掉。为此,我们需要把一部分用户分配给其他的主机服务器,减缓主服务器的压力。当然,对于超大并发的情况我们这里提到的仅靠ngix是远远不够的,还需要做缓存(Redis),容器(Docker),检索优化(Lucene)等一系列技术,从而达到服务广大人群的目的。

    2.原理简介:

    这是网上借来的一张图片,我们看到,多个客户端本来是访问同一个web服务器的,但是,当用户量特别大的时候,我们就需要多个服务器来分流了,但是,如何保证这一点呢?如果我们把项目发包后直接通过不同的域名解析达到这一目的,这显然很不合适。那怎么把他们关联起来呢?这时候nginx就有用武之地了,它作为一种反向代理,很像是一个核心枢纽来控制流往它的请求,然后根据某种机制对这些请求进行分配,让对应的主机去提供服务。这就达到了我们的目的。

    3.关于如何搭建环境请参考这篇文章,写的很好:https://www.cnblogs.com/taiyonghai/p/6728707.html

    4.接下来就是对nginx的配置文件/etc/nginx/nginx.conf文件进行配置:

    #user  nobody;
    worker_processes  1;
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    #pid        logs/nginx.pid;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        #tcp_nopush     on;
        keepalive_timeout  65;
        #gzip  on;
       
    upstream www.testgwb.com {                      //配置轮询机制,名字可以随便起,关键字upstream
             ip_hash;                            //ip_hash可以保证session域对象的共享问题
             server 192.168.43.169:8080 weight=5;          //这是我配置的本主机tomcat服务器
             server 192.168.43.1:8080 weight=3;             //另一台服务器tomcat配置
    }  
        server{  
            listen 80;                            //监听80端口
            server_name  www.testgwb.com;                 //这里的域名你就可把它理解成为对应得主机服务器解析的主机
            location / {  
                    proxy_pass         http://www.testgwb.com;    //这里需要配置,代表让该代理通过
                    proxy_set_header   Host             $host;  
                    proxy_set_header   X-Real-IP        $remote_addr;  
                    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;  
            }  
    }  
    }

    5.开启两台服务器各自的tomcat,然后配置各服务器的hosts文件,添加域名映射

      5-1.windows主机为例:在C:WindowsSystem32driversetc下找到hosts文件,打开后添加域名映射如下图:

      

      5.2.如果是centos,打开终端,输入指令:vim /etc/hosts,添加域名:

          

    6.通过ping指令看看域名是否解析成功,拿window来说:

    如果看到可以ping通,说明已经解析成功了。

    7.打开浏览器输入设置的域名:www.testgwb.com,发现无法访问,但是刚才明明可以ping通,说明主机已经连通,唯一有问题的可能就是端口号没开放了:

    可以在命令行输入:systemctl stop firewalld.service先关闭防火墙,然后访问,发现通了。

    ok,那既然是端口未放问题可以开放80端口

    root:systemctl start firewalld.service

    root:firewall-cmd --zone=public --add-port=80/tcp --permanent

    8.关于配置文件明明没有问题,但就是不能通过域名直接访问到主服务器下的资源问题结局方案,centos开机警示信息:You must tell SELinux about this by enabling the 'httpd_can_network_connect' boolean. You can read 'None' man page for more details. setsebool -P httpd_can_network_connect 1

      解决:其实类似问题都属于linux系统的一个自我保护机制,具体关于SELinux的详细机制可以自己搜以下,我的理解是它是一个系统保护机制,和防火墙类似,但不是同一个东西。为此,遇到此错误可以切换到root用户执行:

      $root:semanage port -a -t http_port_t -p tcp 8081

      $root:semodule -i my-nginx.pp

  • 相关阅读:
    [Python] Marshmallow QuickStart
    [Python]Marshmallow 代码
    [python]Flask-migrate简单入门
    [数据库]Sqlite使用入门
    [Python] dict对象的keys()和values()返回的值,是否总是保证一一对应?
    【Weiss】【第03章】练习3.20:中缀表达式转后缀表达式
    【Weiss】【第03章】练习3.19:计算后缀表达式
    【Weiss】【第03章】练习3.18:检查平衡符号
    【Weiss】【第03章】练习3.17:懒惰删除
    【TIJ4】第六章全部习题【习题未完成】
  • 原文地址:https://www.cnblogs.com/g177w/p/9116907.html
Copyright © 2020-2023  润新知