通过nginx中的子域服务静态内容

时间:2017-03-07 09:14:46

标签: nginx

我有一些slate个文档作为网站,并希望通过子域在内部服务器上提供它们,如下所示:internal-docs.mysite.com。为了记录,访问mysite.com显示“nginx正在运行”页面。

我创建了一个包含以下路径和名称的配置文件:/etc/nginx/sites-available/internal-docs.mysite.com

server {
    listen 80;
    server_name internal-docs.mysite.com;

    root /var/www/docs-internal;
    index index.html;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
}

当然,我已将这些文件放在/var/www/docs-internal中。然后我在/etc/nginx/sites-enabled目录中的uppershown配置文件中创建了一个符号链接:

internal-docs.mysite.com -> ../sites-available/internal-docs.mysite.com

然后我重新加载nginx -s reload,但“无法访问此网站”错误是我在访问网址时获得的错误。

设置和配置看起来对我来说是正确的(根据我遵循的指导原则),这就是为什么我处于死路,有点......

2 个答案:

答案 0 :(得分:4)

好像你忘记了Listen指令。请尝试以下方法:

server {
    listen 80;
    server_name internal-docs.mysite.com;

    root /var/www/docs-internal;
    index index.html;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
}

如果不起作用,请检查:

  1. Nginx用户具有对网站内容的读取权限。例如,如果您的Nginx用户是www并且您具有root访问权限,请执行以下操作:

    # su www
    $ cat /var/www/docs-internal/index.html
    

    如果失败,请确保该位置具有正确的所有权和权限。请注意,对于能够浏览目录的用户,该目录必须具有该用户或用户组的执行位。

  2. Nginx用户对文件的读取权限为../sites-available/internal-docs.mysite.com。例如,如果您的Nginx用户是www并且您具有root访问权限,请执行以下操作:

    # su www
    $ cat /etc/nginx/sites-available/internal-docs.mysite.com
    

    如果失败,请确保配置文件具有正确的所有权。注意:通常Nginx主进程由root运行,并且该进程生成以Nginx用户身份运行的子进程,因此对配置文件的权限不太可能成为问题。

  3. 也许您的配置文件名应以" .conf"结尾。 (在我的服务器上,我有以下行:包括conf.d / * .conf; 所以它将加载任何以" .com&#结尾的conf文件34;

  4. Nginx尝试在其主配置文件中加载../sites-available/中的文件。也许它不会,而是在conf.d目录中(默认)。

  5. 您可以在子域上执行ping和nslookup。如果你不能,那么你必须先修复它(DNS,防火墙......)。

答案 1 :(得分:0)

为了别人的缘故 - 我写的配置是正确的,我的问题是两件事:

  1. 我必须删除listen 80指令,因为已经有另一个配置文件,它指定nginx应该在端口80上侦听。一个人不应该告诉nginx两次在同一个端口上侦听,即使它&# 39; s在两个单独的配置文件中
  2. /var/www/docs-internal文件夹的权限。打开文件夹需要x(执行)权限,而打开文件需要r(读取)perm。我必须为此层次结构中的所有文件夹提供相应的权限,以便内容可以全局打开(来自所有人),这基本上是从浏览器访问它。