通过nginx中的子域提供静态内容

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

我用以下path和名称创build了一个configuration文件: /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 dir中创build了一个符号链接:

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

然后我重新加载nginx -s reload但是“这个网站无法到达”错误是我在访问URL时得到的。

设置和configuration对我来说是正确的(根据我所遵循的指导方针),所以这就是为什么我陷入死胡同,有点…

看来你忘记了listn指令。 尝试以下操作:

 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”结尾(在我的服务器上,我有以下行: include conf.d / * 。conf ;所以它不会加载任何以“.com”结尾的conf文件。

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

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

为了别人 – 我写的配置是正确的,我的问题有两件事:

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