使用uwsgi运行两个psgi Perl Dancer应用程序。
几乎每一个要求,uwsgi封臣都会反复宣布对皇帝的忠诚,这是正常的吗?
这是我的uwsgi.log文件的一小部分:
announcing my loyalty to the Emperor...
Mon Aug 17 20:51:59 2015 - [emperor] vassal www.ini is now loyal
[pid: 1713|app: 0|req: 4/11] 0.0.0.0 () {44 vars in 873 bytes} [Mon Aug 17 20:52:12 2015] GET /sitemap-index.xml => generated 284 bytes in 7 msecs (HTTP/1.1 200) 4 headers in 146 bytes (0 switches on core 0)
[pid: 1706|app: 0|req: 2/12] 0.0.0.0 () {42 vars in 808 bytes} [Mon Aug 17 20:52:22 2015] GET / => generated …Run Code Online (Sandbox Code Playgroud) 我已经创建了带有强制转换的子类型,如下所示,并且我尝试根据Moose::Manual::Types 将Birth_d其与内置类型结合使用。Maybe
我收到错误You cannot coerce an attribute (birth_d) unless its type (Maybe[Birth_d]) has a coercion。这是完整的测试代码:
package Student;
use Moose;
use Moose::Util::TypeConstraints;
use DateTime::Format::MySQL;
class_type 'Birth_d', { class => 'DateTime' };
coerce 'Birth_d',
from 'Str',
via { DateTime::Format::MySQL->parse_date( $_ ) };
has 'name' => (
isa => 'Str',
is => 'ro',
);
has 'birth_d' => (
isa => 'Maybe[Birth_d]', # This works: isa => 'Birth_d'
coerce => 1,
is => 'ro',
);
package main;
use …Run Code Online (Sandbox Code Playgroud) 我正在尝试在同一台基于 nginx 的服务器上部署同一应用程序的两个不同版本。如果 URL 以 /v2 开头,则应使用“v2”,否则使用 v1。例子:
http://example.com/v2/x/y/z * runs v2 app
http://example.com/anything/else * runs v1 app
Run Code Online (Sandbox Code Playgroud)
该应用程序的两个不同版本通过 nginx 进行代理,并且该部分运行良好。
问题是我有两个静态资产目录/static和/cachedassets,这两个版本都是通用的(并且都源自/home/v1|2/www/public。因此,即使请求http://example.com/v2/x/y/z最初将使用正确的应用程序,加载的页面将包含对/static和 的引用/cachedassets,如果没有 /v2 前缀,则会错误地从/home/v1/www/public.
我知道引用者是一个不完美的解决方案。作为临时的权宜之计,在我有机会制定更强大的解决方案之前,我尝试使用 nginx 的 $http_referer 来指向这些资产的正确位置。这是 nginx 文件:
server {
listen 1.2.3.4
server_name example.com
...
location /v2 {
root /home/v2/www/public;
try_files $uri @proxyv2;
access_log off;
expires max;
}
location ^/(static|cachedassets) {
root /home/v1/www/public;
if ($http_referer ~* "/v2/") {
root /home/v2/www/public;
}
} …Run Code Online (Sandbox Code Playgroud)