WisPlanner Windows生产环境 Nginx反向代理

本文介绍在Windows环境下搭建Wisplanner服务的Nginx反向代理
第一步. 下载Nginx并安装,略

第二步. 基本配置
首先,我们给出以下的简称,用于提供RS服务的,我们称为wisp-rs, 用于提供UI渲染的,我们称为wisp-ui
wisp-rs和wisp-ui都可以进行集群,但本章节不做介绍。
1)对于客户并发数量较少的环境,我们通常,wisp-rs和wisp-ui是一台主机。对于这种情况,最好将wisp-ui连接wisp-rs的地址改为127.0.0.1。
2)wisp-rs是推荐在内网的系统,我们基本没考虑过使用https
3)在没有使用nginx反向代理时,wisp-ui提供外网服务,我们通常要考虑https
4)如果使用了nginx进行反向代理,wisp-ui不提供外网服务,应当采用http,而nginx提供https服务

本文介绍使用nginx进行反向代理,那么首先,应该让wisp-ui提供http服务并且屏蔽https服务,然后给出一个新的端口号,不要使用80端口

wisp-ui的配置如下

-vm 
/home/wisp/jdk1.8.0_212/jre/bin/java

-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.551.v20171108-1834

-console
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:MetaspaceSize=256M
-XX:MaxMetaspaceSize=512M
-Xms512m
-Xmx512m
-server

-Dosgi.bundles=com.bizvisionsoft.annotations@start,com.bizvisionsoft.bruicommons@3:start,com.bizvisionsoft.bruiengine@start,com.bizvisionsoft.mongocodex@start,com.bizvisionsoft.pms@start,com.bizvisionsoft.serviceconsumer@start,com.bizvisionsoft.service@start,com.bizvisionsoft.tmt@start,com.bizvisionsoft.widgets@start,com.eclipsesource.jaxrs.consumer@start,com.eclipsesource.jaxrs.jersey-all@start,com.eclipsesource.jaxrs.provider.multipart@start,com.eclipsesource.jaxrs.provider.security@start,com.eclipsesource.jaxrs.provider.sse@start,com.eclipsesource.jaxrs.provider.swagger@start,com.eclipsesource.jaxrs.publisher@start,com.eclipsesource.jaxrs.swagger-all@start,com.google.gson@start,mongo-java-driver@start,com.ibm.icu.base@start,commons-codec@start,commons-collections4@start,commons-compress@start,commons-lang3@start,commons-math3@start,guava@start,asm@start,javassist@start,javax.servlet-api@start,javax.servlet@start,javax.xml@start,jsoup@start,logback-classic@start,logback-core@start,org.apache.batik@start,org.apache.commons.fileupload@start,org.apache.commons.io@start,org.apache.felix.gogo.command@start,org.apache.felix.gogo.runtime@start,org.apache.felix.gogo.shell@start,org.apache.felix.scr@start,org.apache.poi@start,org.eclipse.core.commands@start,org.eclipse.core.contenttype@start,org.eclipse.core.jobs@start,org.eclipse.core.runtime@start,org.eclipse.equinox.app@start,org.eclipse.equinox.cm@start,org.eclipse.equinox.common@2:start,org.eclipse.equinox.console@start,org.eclipse.equinox.http.jetty@start,org.eclipse.equinox.http.registry@start,org.eclipse.equinox.http.servlet@start,org.eclipse.equinox.preferences@start,org.eclipse.equinox.registry@start,org.eclipse.jetty.continuation@start,org.eclipse.jetty.http@start,org.eclipse.jetty.io@start,org.eclipse.jetty.security@start,org.eclipse.jetty.server@start,org.eclipse.jetty.servlet@start,org.eclipse.jetty.util@start,org.eclipse.osgi.services@start,org.eclipse.osgi.util@start,org.eclipse.osgi@1:start,org.eclipse.rap.draw2d.compatibility@start,org.eclipse.rap.draw2d@start,org.eclipse.rap.filedialog@start,org.eclipse.rap.fileupload@start,org.eclipse.rap.jface@start,org.eclipse.rap.nebula.jface.gridviewer@start,org.eclipse.rap.nebula.widgets.grid@start,org.eclipse.rap.rwt.osgi@start,org.eclipse.rap.rwt@start,org.htmlparser@start,net.sf.mpxj@start,slf4j-api@start

-Declipse.ignoreApp=true
-Dosgi.noShutdown=true
-Dosgi.configuration.area=osgi-ui
-Dorg.eclipse.equinox.http.jetty.log.stderr.threshold=info
-Dcom.bizvisionsoft.service.url=http://127.0.0.1:9158/services
#-Dorg.eclipse.equinox.http.jetty.https.enabled=true
-Dcom.bizvisionsoft.bruiengine.EnableTraceModelFile=true
-Dorg.osgi.service.http.port=8080
-Dcom.bizvisionsoft.bruiengine.ClientConfigRootPath=/home/wisp/server/client
-Dcom.bizvisionsoft.sqldb.datasource=/home/wisp/server/wisp6/configuration/extdb.properties
-Dcom.bizvisionsoft.service.Lang=/home/wisp/server/lang
-Dlogback.configurationFile=/home/wisp/server/wisp6/configuration/log-brui.xml
#-Dorg.eclipse.equinox.http.jetty.ssl.keystore=/home/wisp/server/wisp6/configuration/wisplanner.com.jks
#-Dorg.eclipse.equinox.http.jetty.ssl.keypassword=0l8ahIs9
#-Dorg.eclipse.equinox.http.jetty.ssl.password=0l8ahIs9
-Dcom.bizvisionsoft.service.MongoDBConnector=/home/wisp/server/wisp6/configuration/db.properties

请注意:
1)这个是wisp-ui.ini文件,对应在windows下的可执行文件为wisp-ui.exe文件
2)这个ini文件里面已经包含了config.ini的内容(config.ini和启动器.ini里面的参数是可以互置的。)
3)上文已经包含了所有的config.ini的内容,因此,不需要单独配置config.ini了
4)对于Java的启动参数,请注意学习并且根据实际情况进行配置
5)上文的参数
-Dcom.bizvisionsoft.service.url=http://127.0.0.1:9158/services
是访问本机的wisp-rs服务,如果不是同一台机器,请更换地址
上文中已经注释了使用https的配置
并且加入了使用http的配置

现在我们应该可以启动wisp-ui并且在8080端口进行访问了

第三步,配置nginx

首先修改nginx.conf文件,我们打开gzip的功能,其他参数的配置请自行学习。

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

然后,在conf.d目录下创建一个扩展的配置文件
default.conf

server {
    listen 443 ssl;
    server_name  www.wisplanner.com;
    ssl on;
    ssl_certificate ssl/wisplanner.com.pem;
    ssl_certificate_key ssl/wisplanner.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;   
    
    location ~ /rwt-resources/generated/ {
    proxy_pass http://127.0.0.1:8080;
    }

    location ~ /rwt-resources/themes/images/ {
    proxy_pass http://127.0.0.1:8080;
    }

    location ~ .*\.(svg|js|css|html|png|ico|gif|jpg|bpm)$
    {
       root /home/wisp/server/http-res;
       expires 7d;
    }

    location / {
    index index.html index.htm;
    proxy_redirect off;
    proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
    proxy_max_temp_file_size 128m; 
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    }

} 

server {
    listen 80;
    server_name  139.9.191.90;
    
    location ~ /rwt-resources/generated/ {
    proxy_pass http://127.0.0.1:8080;
    }

    location ~ /rwt-resources/themes/images/ {
    proxy_pass http://127.0.0.1:8080;
    }

    location ~ .*\.(svg|js|css|html|png|ico|gif|jpg|bmp)$
    {
       root /home/wisp/server/http-res;
       expires 7d;
    }

    location / {
    index index.html index.htm;
    proxy_redirect off;
    proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
    proxy_max_temp_file_size 128m; 
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    }
   

} 

上面的配置,同时支持了80端口和443端口。生产环境只需要443端口即可。
server_name,需要域名,请客户申请对应的SSL证书
ssl_certificate是证书存放的目录,对于pem和key文件,SSL证书的提供方一般都会给出。

接下来是重点:

第四步,配置静态资源访问目录
nginx的优势在于两点,一点是负载均衡,另一点就是高性能的静态资源访问。
对于负载均衡,请参考本系列中我们在docker中配置nginx的方法。本文只介绍配置静态资源。
对于wisp-ui有三类资源,一类是纯静态的,一类是RWT动态配置的。

对于rwt动态的资源,我们需要直接代理。

    location ~ /rwt-resources/generated/ {
    proxy_pass http://127.0.0.1:8080;
    }
    location ~ /rwt-resources/themes/images/ {
    proxy_pass http://127.0.0.1:8080;
    }

其他的资源我们放置在nginx服务器的本机目录

    location ~ .*\.(svg|js|css|html|png|ico|gif|jpg|bmp)$
    {
       root /home/wisp/server/http-res;
       expires 7d;
    }

上文的配置将静态文件指向了目录 root /home/wisp/server/http-res;
这个目录是linux下的目录,windows下请自行配置。

除此以外的,统统代理

  location / {
    index index.html index.htm;
    proxy_redirect off;
    proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
    proxy_max_temp_file_size 128m; 
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    }

以上就已经给出了一个基本的反向代理的配置。
更多的有关nginx的细节请自行学习。
百度网盘下载6.2的静态资源文件,请了解其目录结构,并且在版本更新时及时更新静态资源

链接:https://pan.baidu.com/s/1gX0FDVfVhv8_dPiNpoE4pQ
提取码:poxg

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,951评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,606评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,601评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,478评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,565评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,587评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,590评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,337评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,785评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,096评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,273评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,935评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,578评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,199评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,440评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,163评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,133评论 2 352