用Nginx代理Tomcat的Cuba应用程序

3

我很难将nginx配置为运行Cuba平台的Tomcat代理。我使用Nginx进行SSL。

Nginx指令:

server {
    server_name test.domain.it   www.test.domain.it;
    access_log /var/log/nginx/test.domain.it.access.log rt_cache;
    error_log /var/log/nginx/test.domain.it.error.log;
    root /var/www/test.domain.it/htdocs/PHPApp/public;
    index index.php index.html index.htm;
    include common/php7.conf;  
    include common/locations-php7.conf;
    listen 443 ssl;
    ssl on;
    ssl_certificate     /etc/letsencrypt/live/test.domain.it/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/test.domain.it/privkey.pem;

    location /board {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout     3600;
        proxy_connect_timeout  240;
        proxy_set_header Host $host;
        proxy_set_header X-RealIP $remote_addr;

        proxy_pass http://127.0.0.1:8080/board;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

tomcat/conf/board/local.app.properties:

cuba.webHostName = test.domain.it
cuba.webAppUrl = https://test.domain.it/board
cuba.webContextName = board

tomcat/conf/board-core/local.app.properties:

cuba.webHostName = test.domain.it
cuba.automaticDatabaseUpdate = true
cuba.webAppUrl = https://test.domain.it/board

Nginx访问日志:

82.60.41.71 0.010 - [31/Mar/2017:15:13:21 +0200] test.k-rev.it "GET /board HTTP/1.1" 302 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36"
82.60.41.71 0.015 - [31/Mar/2017:15:13:21 +0200] test.k-rev.it "GET /board/ HTTP/1.1" 200 1033 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36"

Tomcat访问日志:

127.0.0.1 - - [31/Mar/2017:10:48:40 +0200] "GET /board HTTP/1.1" 302 -
127.0.0.1 - - [31/Mar/2017:10:48:40 +0200] "GET /board/ HTTP/1.1" 200 2349

上面我使用了“域名”代替实际的域名。 从服务器指令可以看出,我已经在根目录下安装了一个PHP应用程序。
我已经尝试了几个选项,但都没有成功。我可以访问Tomcat,但是会弹出“无法加载引导JavaScript:./VAADIN/vaadinBootstrap.js?v2017_03_24_15_29”的弹窗。
在8080端口上从外部访问Tomcat而不使用SSL是正常的。

请检查访问日志 - Tomcat 可能正在尝试加载其资源,而没有提供“/board/”前缀。 - Richard Smith
我所得到的唯一关于请求的日志是由nginx记录的。 - gmlion
日志条目是什么? - Richard Smith
1个回答

3

在这种情况下,我是否也应该设置cuba.webHostName和cuba.webAppUrl?设置为公共面向的主机名? - gmlion
我在board/VAADIN/resources/jquery/jquery-1.12.4.min.js和board/VAADIN/vaadinPush.js?v2017_03_28_11_25上也遇到了404错误。我目前在nginx上配置了ssl,但也尝试过没有ssl,错误仍然存在。 - gmlion
如果我将Tomcat暴露给公众,一切都正常工作。代理配置肯定有问题,但是在遵循了所有指示之后,我仍然得到原始错误。 - gmlion
1
@gmlion 请编辑问题并写下您实际的Cuba主机相关设置,Nginx代理配置和Nginx日志。 - AdamSkywalker
尽管我的问题是在nginx的其他冲突设置,但这是将Cuba代理到nginx后面的正确方法。 - gmlion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接