1 概述

Nginx的作用主要如下:

1) 作为请求反响代理服务;
2) 请求负载均衡;
3) 作为静态资源服务器,提升静态资源加载速度,减轻应用服务器请求压力;

2 推荐配置

以linux环境下配置为例,nginx.conf文件推荐配置如下:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user root;  #以liunx安装用户为准
worker_processes auto;
error_log /var/log/nginx/error.log; #存放错误日志的路径
pid /var/run/nginx.pid;

worker_rlimit_nofile 65535;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    use epoll;
    worker_connections 65535;
    multi_accept on;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    charset   utf-8;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay      on;

    keepalive_timeout  65s;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 2k;
    large_client_header_buffers 4 4k;
    client_max_body_size 10m;
    client_header_timeout 15s;
    client_body_timeout 15s;

    open_file_cache max=102400 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 1;

    reset_timedout_connection on;
    send_timeout 15s;
    server_tokens off;

    gzip on;
    gzip_min_length 2k;
    gzip_buffers   4 32k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;

    upstream lczServer {  #乐创者平台服务,可以是多个服务器节点地址、端口,也可以是下级nginx集群的代理地址、端口
        server ip:port weight=1;
        #健康监测(可选)
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "HEAD /oapi/server/connectTestting HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
        #check_keepalive_requests 100;
    }
    upstream lczCreaterServer {  #跨设备表/云表单单服务,可以是多个服务器节点地址、端口,也可以是下级nginx集群的代理地址、端口
        server ip1:port weight=1;
        server ip2:port weight=1;
        #健康监测(可选)
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "HEAD /oapi/server/connectTestting HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
        #check_keepalive_requests 100;
    }
    upstream lczMatrixServer {  #数智大屏服务,可以是多个服务器节点地址、端口,也可以是下级nginx集群的代理地址、端口
        server ip1:port weight=1;
        server ip2:port weight=1;
        #健康监测(可选)
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "HEAD /oapi/server/connectTestting HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
        #check_keepalive_requests 100;
    }
    upstream lczReportServer {  #报表服务(报表服务压力一般都比较大,这里以二级集群为例)
        server ip:port;

        #健康监测(可选)
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "HEAD /oapi/server/connectTestting HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
        #check_keepalive_requests 100;
    }
    upstream  lczPlatform { #平台微服务
        server ip:port weight=1;

        #健康监测(可选)
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "HEAD /oapi/lczPlatform/server/health HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
        #check_keepalive_requests 100;
    }
    upstream  lczBatchWork { #离线开发微服务
        server ip:port weight=1;

        #健康监测(可选)
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "HEAD /oapi/lczBatchWorkEngine/server/health HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
        #check_keepalive_requests 100;
    }
    upstream  lczStreamWork { #实时同步微服务『v7.3.0新增』
        server ip:port weight=1;

        #健康监测(可选)
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "HEAD /oapi/lczStreamWork/server/health HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
        #check_keepalive_requests 100;
    }
    upstream  lczDataProvide { #数据服务微服务
        server ip:port weight=1;

        #健康监测(可选)
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "HEAD /oapi/lczDataProvide/server/health HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
        #check_keepalive_requests 100;
    }
    upstream  lczSchedule { # 调度微服务
        server ip:port weight=1;

        #健康监测(可选)
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "HEAD /oapi/lczSchedule/server/health HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
        #check_keepalive_requests 100;
    }
    upstream  lczMessageCenter { # 乐创者消息微服务
        server ip:port weight=1;

        #健康监测(可选)
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "HEAD /oapi/lczMessageCenter/server/health HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
        #check_keepalive_requests 100;
    }

    server {
        listen       80;
        #server_name  144.20.80.xx;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        #【可选】【建议】动静分离配置 =====================[[
        # 报表/单元格表单/场景报表/透视分析/智能报告/跨设备表单/数智大屏/微应用等前端静态资源
        location ~ ^{/lczServer}/(lczCommon|lczReport|lczCreater|lczCreater2|lczCloudForm|lczPortal2|lczMatrix|lczThird|lczWorkflow|lczWorkflow2|lczMicroApp|lczDataStudio)/ {
           root static/;
        }

        # 乐创者门户(v6.8.9版本新增)
        location {/lczServer}/lczPortal {
            alias nginx安装目录/static{/lczServer}/lczPortal;
            try_files $uri $uri/ {/lczServer}/lczPortal/index.html;
            index index.html index.htm;
        }
        # 动静分离配置 =====================]]

        #【可选】websocket 反向代理配置,用于lczPortal长连接
        location /webSocket/user {
            proxy_set_header Host               $http_host;
            proxy_set_header X-Forwarded-Scheme $scheme;
            proxy_set_header X-real-ip          $remote_addr;
            proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
            proxy_pass   http://lczServer;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_read_timeout 36000s;
            proxy_send_timeout 36000s;
        }

        # 跨设备表单、云表单等对内/对外的后台接口
        location /lczServer/creater/  {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczCreaterServer;
            proxy_connect_timeout 60; #单位:秒
        }
        location ~ ^/lczServer/(api|oapi)/(cform|lczCloudForm|creater)/  {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczCreaterServer;
            proxy_connect_timeout 60; #单位:秒
        }

        # 数智大屏后台接口
        location /lczServer/api/lczMatrix/  {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczMatrixServer;
            proxy_connect_timeout 60; #单位:秒
        }

        # 报表/单元格表单/场景报表/透视分析/智能报告等后台接口
        location ~ ^/lczServer/(hrServlet|hrServletEx) {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczReportServer;
            proxy_connect_timeout 60; #单位:秒
        }
        location ~ ^/lczServer/api/(lczReport|lczPivot|lczQuery)/ {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczReportServer;
            proxy_connect_timeout 60; #单位:秒
        }

        # 平台微服务控制器 (含 数据开发平台相关控制器、知识库rpc调用 )
        location ~ ^/lczServer/(api|rapi)/(lczPlatform|lczBatchWork|lczKnowledge|lczStreamWork)/ {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczPlatform;
        }

        # 离线开发微服务控制器
        location ~ ^/lczServer/(api|rapi)/lczBatchWorkEngine/ {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczBatchWork;
        }

        # 实时同步微服务控制器
        location ~* ^/lczServer/(api|rapi|oapi)/lczStreamWorkEngine/  {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczStreamWork;
        }

        # 数据API服务微服务控制器
        location ~* ^/lczServer/(api|oapi)/(lczDataProvide|dataService)/  {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczDataProvide;
        }

        # 调度微服务控制器
        location ~* ^/lczServer/(oapi)/lczSchedule/  {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczSchedule;
        }

         # 乐创者消息微服务控制器
        location ~* ^/lczServer/(rapi|oapi)/lczMessageCenter/  {
            proxy_set_header   Host             $http_host;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_pass http://lczMessageCenter;
        }

        # 其他请求代理配置
        location / {
            proxy_set_header Host $http_host; # 或者 $host:$server_port
            proxy_set_header X-Forwarded-Scheme $scheme;
            proxy_set_header X-real-ip $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://lczServer;
            proxy_connect_timeout 60; #单位:秒
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
}

注意:{/lczServer} 在上面代表可选,例如lczServer.war包部署时是放在ROOT目录下,则可以省略;如果是改成其他名称的,修改为对应的名称即可。

3 部署过程

3.1 linux环境(推荐)

安装之前查看端口,默认nginx使用的80端口,如果80端口已经占用启动过程中可能会报错,针对端口占用情况,可以停止占用端口的服务或者nginx改用其他端口启动,停用和改端口方法不再本文介绍。

yum 安装ningx

nginx添加yum repro库中:

#下载nginx包
wget https://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 建立nginxyum仓库
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

查看nginx信息:

yum info nginx

查看yum源仓库中nginx版本:

yum --showduplicates list nginx | expand

安装nginx,默认安装最新的稳定版本:

yum install nginx

查看nginx的状态:

ps -ef | grep nginx

进入nginx的sbin目录下:

启动nginx: ./nginx
重启nginx: ./nginx -s reload
关闭nginx:
    方式1: ./nginx -s stop  #先查出nginx进程id再使用kill命令强制杀掉进程
    方式2: ./nginx -s quit  #待nginx进程处理任务完毕进行停止

nginx.conf文件修改后,要重启Nginx服务才能生效。

3.2 windows环境

官方下载地址:http://nginx.org/en/download.html,建议下载最新的稳定版本。
下载完成后,解压缩,然后就可通过windows命令行窗口(CMD)进行启动。

打开命令行窗口后,先进入nginx解压后目录下的bin目录,然后可通过下面命令启动、重启、关闭Nginx服务。

启动:start nginx.exe
重启:nginx -s reload
关闭:nginx -s stop 或 nginx -s quit

1)、请不要通过进程管理器中杀进程的方式终止nginx;
2)、nginx.conf文件修改后,要重启Nginx服务才能生效。

作者:柳杨  创建时间:2024-07-01 19:23
最后编辑:倪  更新时间:2025-04-22 15:31