用于静态内容的Nginx服务器

时间:2015-10-10 06:47:12

标签: macos nginx

启动Nginx服务器以提供静态内容(js等)所需的最低要求是什么?

我有:

http {
    server {
        listen 80;
        location / {
            root /Users/matt/Dev;
        }
    }
}

events {
    worker_connections  1024;
}

但我明白了:

禁止

You don't have permission to access / on this server.

我已经sudo nginx -s reload

2 个答案:

答案 0 :(得分:0)

默认情况下,我们将Nginx作为root运行,例如sudo nginx ...,Nginx将通过root启动主进程并侦听一个或多个给定的http端口,但出于安全原因,它将由用户nobody启动多个工作进程。这些工作进程将处理传入的请求。我们可以通过运行

来检查

更新:将ps -ef更改为ps aux,因为在macosx / freebsd ps -ef上没有显示用户

$ ps aux | grep nginx

在您的情况下,因为用户nobody无权访问/ Users / matt / Dev,因此我们在访问相关位置时会收到no-permission-error。

要修复它,我们可以尝试

  1. 在nginx.conf中定义用户,例如user matt;
  2. 设置/ Users / matt / Dev的访问权限。请注意,我们还需要确保用户nobody没有搜索权限(即x-permission)来访问路径名路径前缀中的所有目录,例如: / Users,/ Users / matt,/ Users / matt / Dev,并具有/ Users / matt / Dev及其子文件的读取权限。

答案 1 :(得分:0)

使用您的配置,您可以访问单个文件。所以你可以得到example.com/example.js(尝试它,你可以看到它有效)。

使用example.com,您希望显示已禁用的根目录(/Users/matt/Dev)的内容。要启用autoindex

location / {
    root /Users/matt/Dev;
    autoindex on;
}

查看更多信息here

  

ngx_http_autoindex_module模块处理以。结尾的请求   斜杠字符('/')并生成目录列表。

相关问题