分布式应用部署之Nginx方案

分布式部署方式有很多,最简单的就是直接用nginx进行LB,多机部署应用实例。

本文简单说明整个步骤。(本文以在同一台服务器上部署两个应用为例进行介绍,如果是多台服务器,部署配置方式都是类似的,考虑到域名问题,可以借助虚IP和keepalive来实现动态漂移)

1、安装nginx

在centos下安装nginx最简单的方式当然是直接使用yum install安装,但是存在的问题就是nginx的一些扩展模块都没有。所以建议还是下载源码,然后手动build。

首先,需要安装nginx build过程中的一些依赖。

yum -y install zlib zlib-devel gcc-c++ libtool  openssl openssl-devel pcre pcre-devel

注意:安装过程中,有可能提示依赖包的版本不正确,可以考虑upgrade升级或者downgrade降级对应的依赖包的版本,然后再进行安装。

另外,最好检查一下yum的repo配置源的版本是否正确,比如检查:/etc/yum.repos.d/CentOS-Base.repo文件,看看里面的URL路径里面的OS版本是否与系统的CentOS版本一致。(如果出现不少版本不一致的错误提示,大概率是repo源配置问题)

然后下载nginx到指定目录(本示例使用的是1.20.2版本,1.21版本解压后的目录结构可能有变化)并解压。

进入解压后的目录,执行configure命令:

./configure --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-pcre-jit

上面的这些参数是推荐安装的一些扩展模块,如果后续需要新增加模块,则需要重新进行编译nginx。

(说明:重编译过程中,为了保持之前的配置不变,建议参考下文进行操作)https://www.cnblogs.com/byeyear/p/11908586.htmlicon-default.png?t=N5K3https://www.cnblogs.com/byeyear/p/11908586.html

(说明2:如果命令执行过程中报错,可能是缺少一些依赖,按照提示进行处理即可)

然后执行命令:

make & make install

如果过程中没有报错,则安装完成。然后可以执行命令查看版本信息:

/usr/local/nginx/sbin/nginx -V

(该命令也可以查看出build过程中使用的参数)

2、对nginx进行配置

具体的nginx配置说明不再赘述,网上很多资料,这里给出简单的示例:

worker_processes  2;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    map $uri $loggable{
        default 1;
        ~^(.*\.(gif|jpg|jpeg|png|bmp|swf|js|css|woff|ttf)$) 0;
    }

    log_format myFormat '$remote_addr [$time_local] <$upstream_addr $request_time $upstream_response_time> $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';

    access_log  logs/access.log  myFormat if=$loggable;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;

    upstream myapps {
        server localhost:8081;
        server localhost:8082;
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass          http://myapps;
            #proxy_redirect      off;
            #proxy_set_header    Host $host:$server_port;
        }
    }
}

说明:对于nginx的access日志,很多无用的(比如js、css等文件的访问)日志可以过滤掉(借助map,参考:Nginx access_log日志条件过滤(IP地址/请求状态) - 简书因为集团的SLB经常会通过心跳来进行服务检测, 每秒会有多个access, 导致日志文件经常将磁盘过度占用, 触发告警. 所以配置规则, 对access_log进行过滤. 搜...https://www.jianshu.com/p/9861cd199878

说明:日志的内容、格式,可以通过log_format来配置,参考:https://www.cnblogs.com/kevingrace/p/5893499.htmlicon-default.png?t=N5K3https://www.cnblogs.com/kevingrace/p/5893499.html

3、注意事项

首先,通过nginx进行分布式应用部署前,需要先完成共享session的改造(见另一篇文章)

然后,需要注意如果使用了CAS,对于认证后跳转的url,需要指定为访问nginx的url,而不是后端某个server的地址。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金融码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值