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
# 建立nginx的yum仓库
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
最后编辑:倪 更新时间:2025-04-22 15:31
