从端口到路径前缀的PlayFramework的Nginx代理

时间:2015-07-31 08:30:38

标签: nginx playframework

我有一个Play应用程序在本地端口上侦听:9000。还有其他应用程序在运行。 我想在以下路径上为此应用程序提供服务:

http://myhost/this-play-app -> localhost:9000

以便其他应用可以嵌套在其他路径上。

我已尝试过基本的proxy_pass但它似乎无法正常工作。

server {
    listen   80;
    server_name myhost;
    # MMC Tool
    # ----------------------------------------------------
    location /this-play-app {
        proxy_pass http://localhost:9000;
    }
}

播放应用似乎转发到了根目录。有没有办法欺骗游戏应用程序在/this-play-app路径内工作?
/this-play-app/some-controller而不是/some-controller一样?

由于

1 个答案:

答案 0 :(得分:3)

在文件夹中使用应用程序并不合适 - 您需要至少准备一些专用配置,并在每次更改位置时进行更改。

相反,正如其他建议您应该使用子域,在这种情况下,每个应用程序的行为与根域中的行为完全相同,即使您需要/想要更改该域,您需要的所有内容都将在nginx的配置中进行更改

典型的nginx配置看起来像

upstream your_app {
    server 127.0.0.1:9000;
}

server {
    listen      80;
    server_name your-app.domain.com;
    location / {
      proxy_pass  http://your_app;
    }
}

最有可能在某些VPS或共享主机上,您需要通过某种管理员面板添加子域 - 在localhost上只需要将子域添加到hosts文件。

编辑如果无论如何都不可能使用子域名(可惜)你仍然可以通过配置来解决它,在nginx中使用(正如你所做的那样:

...
    location /this-play-app {
        proxy_pass http://your_app;
    }
...

然后将此行添加到application.conf(播放2.1+)

application.context = "/this-play-app"

或者在Play 2.4+(info

的情况下
play.http.context = "/this-play-app"