使用nginx和Play 2.1应用程序的子目录的反向代理

Luk*_* R. 6 reverse-proxy nginx playframework playframework-2.1

目标

使用nginx为每个应用程序使用不同的子目录设置多个Play 2.1应用程序.

运行的App1 127.0.0.1:4000应该可以在127.0.0.1/dev
运行的App2 下访问,127.0.0.1:5000应该可以访问127.0.0.1/test

组态

nginx.conf

worker_processes  1;

error_log  logs/error.log;

events {
    worker_connections  1024;
}

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

    upstream app1 {
        server 127.0.0.1:4000;
    }

    upstream app2 {
        server 127.0.0.1:5000;
    }

    server {
        listen       80;
        server_name  localhost;

        location /dev {
            rewrite /(.*) /$1 break;
            proxy_pass http://app1;
        }

        location /test {
            rewrite /(.*) /$1 break;
            proxy_pass http://app2;
        }        
    }
}
Run Code Online (Sandbox Code Playgroud)

App1 - application.conf

application.context=/dev
Run Code Online (Sandbox Code Playgroud)

App2 - application.conf

application.context=/test
Run Code Online (Sandbox Code Playgroud)

问题

使用此配置,我可以访问这两个应用程序,但只加载了html代码.未加载所有静态文件(css,js,images).

我认为这是缓存问题.我试过不同的nginx参数,没有运气.如果我第一次请求该站点,浏览器会响应(例如,for cssjs文件127.0.0.1/dev/assets/stylesheets/main.css)状态200但没有内容 - Content-Length: 0.下次回复时304,仍然没有内容.

我不知道这是否是nginxPlay 2.1配置问题.

我将不胜感激任何帮助.

bie*_*ior 1

使用 和 等本地域,而不是依赖子文件夹。虽然应该可以工作,但我看到很多帖子抱怨说他们不......http://test.loc/http://dev.locapplication.context

更重要的是,使用本地域与最终的生产环境更相似,因此更容易调试一些依赖于 url 的东西,例如 ie。饼干。