2017-03-07 50 views
2

我有一些slate文档作为网站,并希望通过子域在内部服务器上为他们提供服务,如下所示:internal-docs.mysite.com。为了记录,访问mysite.com显示“nginx正在运行”页面。通过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但“这个网站不能达到”错误是什么我得到访问URL时。

的设置和配置看起来是正确的,我(根据我遵循的准则),所以这就是为什么我在一个死胡同,有点...

+0

这似乎不是一个Nginx问题。您的子域是否正确指向服务器(尝试nslookup或ping您的子域)? –

+0

@GabrielHautclocq,你是说我设置的配置听起来正确吗?我只是想知道如何解决这个问题。 – Milkncookiez

+0

另外,您应该检查Nginx是否具有对您的配置文件的读取访问权限,并且您的conf会在启用站点的目录中加载.conf文件。 –

回答

3

看来你忘了听指令。请尝试以下操作:

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;所以它会加载任何的conf文件结束。 with“.com”

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

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

0

为他人着想 - 我写的配置是正确的,我的问题是两件事情:

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