# Web服务配置

Web服务可以为协同系统的单机环境提供Web访问,为协同系统的集群环境提供Web访问以及负载均衡。

协同系统的集群要求对应的web服务在做负载均衡时支持会话保持机制。

会话保持机制的意义在于,确保将来自相同客户端的请求,转发至后端相同的服务器进行处理。换句话说,就是将客户端与服务器之间建立的多个连接,都发送到相同的服务器进行处理。这种机制,可以识别客户端与服务器之间交互过程的关联性,在负载均衡的同时,保证一系列相关联的访问请求分配到同一台服务器上。

依据实际情况,可自由选择Nginx(产品提供了标准安装程序,也可自主安装)、Apache、F5或其他web服务软硬件设施。

以下章节对web服务部署及配置时的注意事项进行说明。

# Nginx部署及配置

Nginx支持协同系统的Web代理及集群部署的Web分发。

集群模式下,负载均衡且会话保持,需要用到nginx-sticky-module模块,此模块目前仅支持Linux系统,因此用Nginx做为集群模式的web服务时需要Linux操作系统的服务器。

产品提供了标准的Nginx安装程序,也可自行下载安装配置,详见以下章节。

# 部署概要拓扑图

Nginx服务常见的部署模式见以下部署示意图:

C:\Users\MaX.C\AppData\Roaming\Tencent\Users\313763889\TIM\WinTemp\RichOle\}5LK6[JN]}40BO1~ULEGBVS.png

C:\Users\MaX.C\AppData\Roaming\Tencent\Users\313763889\TIM\WinTemp\RichOle\_CP%73F145`BCG@7M5{71D6.png

# 自主安装配置Nginx

# 安装Nginx

  • Nginx及安装过程中需要的依赖程序的下载链接参考如下:

  • Nginx,参考下载链接(建议下载stable version):http://nginx.org/en/download.html

  • nginx-sticky-module,参考下载链接:https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/downloads/

  • pcre,参考下载链接:https://ftp.pcre.org/pub/pcre/

  • openssl,参考下载链接:https://www.openssl.org/source/

  • zlib,参考下载链接:https://zlib.net/

  • 若系统未安装gcc,请使用操作系统安装盘(或安装镜像)进行安装

  • 以所有的安装程序位于/home/soft下,nginx的安装目录位于/home/nginx下,依次执行以下命令进行nginx的安装(命令中标红的安装包名称,以实际下载的为准):

# 切换目录至/home/soft
cd /home/soft
# 以实际下载的文件格式选择tar或zip解压
# 解压tar压缩包
tar -zxvf nginx-1.12.1.tar.gz
tar -zxvf pcre-8.40.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
tar -zxvf openssl-1.1.0g.tar.gz
# 解压zip压缩包
unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
# 修改解压后文件夹名,便于后续安装
mv nginx1.12.1 nginx
mv pcre-8.40 pcre
mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42 nginx-sticky-module
mv zlib-1.2.11 zlib
mv openssl-1.1.0g openssl
# 赋权文件夹
chmod -R 777 nginx
chmod -R 777 openssl
chmod -R 777 zlib
chmod -R 777 nginx-stick-module
chmod -R 777 pcre
# 进行nginx的configure
cd nginx
# 注意以下configure命令为一行
./configure --prefix=/home/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_random_index_module  --with-http_gzip_static_module --with-pcre=/home/soft/pcre --add-module=/home/soft/nginx-sticky-module --with-openssl=/home/soft/openssl --with-zlib=/home/soft/zlib
# 编译、安装
make
make install

# 配置Nginx

以nginx安装在/home/nginx下为例,nginx的配置文件为/home/nginx/conf/nginx.conf。配置文件内容示例如下(其中upstream的名称及服务地址依据实际情况进行修改):

worker_processes auto;
worker_rlimit_nofile 20960;
error_log  logs/error.log  error;
events {
    worker_connections  4096;
    multi_accept on;
    accept_mutex on;
    accept_mutex_delay 500ms;
}
http {
        server_tokens off;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        access_log off;
        include       mime.types;
        default_type  application/octet-stream;
        keepalive_timeout  300;
        client_max_body_size 10240M;

        gzip on;
        gzip_min_length 1k;
        gzip_buffers 4 16k;
        gzip_comp_level 3;
        gzip_types text/xml text/plain text/css text/javascript application/x-javascript application/javascript application/xml;
        gzip_disable "MSIE [1-6]\.";

        upstream seeyon_v5_cluster{
            sticky;
            server 192.168.0.1:80 max_fails=300 fail_timeout=30s;
            server 192.168.0.2:80 max_fails=300 fail_timeout=30s;
        }

        server {
            listen       80;
            server_name  localhost;
            charset utf-8;

            location / {
                proxy_pass http://seeyon_v5_cluster;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
				proxy_redirect http:// $scheme://;
                #proxy_redirect  off;
                proxy_connect_timeout 300;
                proxy_read_timeout 300;
                proxy_send_timeout 300;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
}

# 启动Nginx

以nginx安装在/home/nginx下为例,nginx的启动脚本为/home/nginx/sbin/nginx。启动示例如下:

# 切换命令行到nginx启动脚本目录
cd /home/nginx/sbin
# 启动
./nginx
# 重启
./nginx –s reload
# 指定配置文件重启,一般用于nginx异常停止后的启动
./nginx –c /home/nginx/conf/nginx.conf

# 启用https

启用https需要购买ca证书,在购买了证书后,对nginx配置文件(nginx.conf)的server段进行以下调整(其中crt、key文件放在conf/ssl下,文件名以实际为准):

 server {
 listen 443 ssl;
 ssl_certificate ssl/www.seeyon.com.crt;
 ssl_certificate_key ssl/www.seeyon.com.key;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 }

# nginx配置http重定向https

此场景需要在nginx配置了https访问的条件下进行配置

编辑nginx.conf配置

在http段落中增加server段,并新增http协议的端口,做rewrite跳转

    server {
        listen 80;
        server_name  localhost;
        charset utf-8;

        location / {
            rewrite ^(.*)$ https://$host$1 permanent;
        }
    }

# 参数调优

参数优化需依据nginx的运行情况,及服务器负载情况进行调整。常见的优化参数有以下内容:

  • worker_processes:nginx的进程数,一般为cpu的倍数,可以为1倍。

  • worker_rlimit_nofile:nginx的进程打开文件数,可以与ulimit --u的值一致。

  • worker_connections:每个进程允许的最多连接数。

  • keepalive_timeout:客户端超时时间,单位秒。

  • client_max_body_size:客户端连接的最大请求实体,影响协同系统的上传附件大小,建议设置大于或等于运行附件上传的最大值。

  • access_log:请求日志,建议无需调试时关闭(off)。

Nginx可优化的参数还有很多,建议依据系统实际的运行需求,选择性优化。

创建人:zhangshuang
修改人:zhangshuang、wangyxyf