首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx/starman/dancer web堆栈的说明

nginx/starman/dancer web堆栈的说明
EN

Stack Overflow用户
提问于 2012-08-26 12:17:41
回答 3查看 7.7K关注 0票数 34

我做web编程已经有一段时间了,对LAMP堆栈非常熟悉。我决定尝试使用nginx/starman/dancer堆栈,我有点困惑于如何从高层次上理解所有这些部分是如何相互关联的。设置堆栈似乎不像设置LAMP堆栈那么简单,但这可能是因为我并不真正理解这些部分之间的关系。

我理解nginx所扮演的角色--一个轻量级的the服务器/代理--但我搞不懂starman与pgsi、plack和dancer的关系。

我希望能对这些部分的相互关系以及为什么每个部分都是必需的(或不必要的)进行堆栈设置的高级分解表示感谢。谢谢!

EN

回答 3

Stack Overflow用户

发布于 2012-12-30 02:25:22

到目前为止,您的答案是正确的,但最好使用以下方式设置nginx:

代码语言:javascript
复制
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 :)

票数 5
EN

Stack Overflow用户

发布于 2014-06-20 11:12:23

来自nginx wiki:

"IfIsEvil ...指令if在位置上下文中使用时会出现问题,在某些情况下,它不会执行您所期望的操作,而是执行一些完全不同的操作。在某些情况下,它甚至会出现分段。如果可能,通常最好避免使用它……“

更好的设置是:

代码语言:javascript
复制
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/;
        }
}
票数 4
EN

Stack Overflow用户

发布于 2018-04-18 21:22:30

更正来自s.magri的答案

代码语言:javascript
复制
location @dancer {
  # Pass on other requests to Dancer app
  proxy_pass_header Server;
  proxy_pass http://localhost:5001;
}

我必须删除最后一条proxy_pass指令中的尾部斜杠。我的nginx (1.10.3)版本不会以斜杠开头。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12127566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档