您现在的位置是:首页 > 运营中心 > Nginx > Nginx

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

编辑:站长来源:互联网作者: 佚名2020-07-03Nginx

简介目标使用nginx为每个应用程序使用不同的子目录设置多个Play 2.1应用程序.运行在127.0.0.1:4000上的App1应该可以在127.0.0.1/dev下访问运行在127.0.0.1:5000上的App2应该可以在127.0.0.1/test下访问组态nginx.confworker_processes 1; error_log logs/

目标

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

运行在127.0.0.1:4000上的App1应该可以在127.0.0.1/dev下访问
运行在127.0.0.1:5000上的App2应该可以在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;
        }        
    }
}

App1 – application.conf

application.context=/dev

App2 – application.conf

application.context=/test

问题

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

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

我不确定这是否是nginx或Play 2.1配置问题.

我将不胜感激任何帮助.

最佳答案 使用http://test.loc/和http://dev.loc等本地域,而不是依赖于子文件夹.尽管application.context应该可行,但我看到很多帖子抱怨说他们不…

使用本地域更加类似于最终的生产环境,所以调试一些url依赖的东西就更容易了,比如ie.饼干.

很赞哦! ()