我做web编程已经有一段时间了,对LAMP堆栈非常熟悉。我决定尝试使用nginx/starman/dancer堆栈,我有点困惑于如何从高层次上理解所有这些部分是如何相互关联的。设置堆栈似乎不像设置LAMP堆栈那么简单,但这可能是因为我并不真正理解这些部分之间的关系。
我理解nginx所扮演的角色--一个轻量级的the服务器/代理--但我搞不懂starman与pgsi、plack和dancer的关系。
我希望能对这些部分的相互关系以及为什么每个部分都是必需的(或不必要的)进行堆栈设置的高级分解表示感谢。谢谢!
发布于 2012-12-30 02:25:22
到目前为止,您的答案是正确的,但最好使用以下方式设置nginx:
server {
listen 80;
server_name foo.example.com;
location / {
# Serve static files directly:
if (-f $request_filename) {
expires 30d;
break;
}
# Pass on other requests to Dancer app
proxy_pass_header Server;
proxy_pass http://localhost:5001/;
}
}这使得nginx服务于所有的静态文件(JavaScript和图片),而不仅仅是css。
此示例取自2011年Perl Dancer Advent :)
发布于 2014-06-20 11:12:23
来自nginx wiki:
"IfIsEvil ...指令if在位置上下文中使用时会出现问题,在某些情况下,它不会执行您所期望的操作,而是执行一些完全不同的操作。在某些情况下,它甚至会出现分段。如果可能,通常最好避免使用它……“
更好的设置是:
server {
listen 80;
server_name foo.example.com;
location / {
# Checks the existence of files and uses the first match
try_files $uri $uri/ @dancer;
}
location @dancer {
# Pass on other requests to Dancer app
proxy_pass_header Server;
proxy_pass http://localhost:5001/;
}
}发布于 2018-04-18 21:22:30
更正来自s.magri的答案
location @dancer {
# Pass on other requests to Dancer app
proxy_pass_header Server;
proxy_pass http://localhost:5001;
}我必须删除最后一条proxy_pass指令中的尾部斜杠。我的nginx (1.10.3)版本不会以斜杠开头。
https://stackoverflow.com/questions/12127566
复制相似问题