我有一些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
,但“无法访问此网站”错误是我在访问网址时获得的错误。
设置和配置看起来对我来说是正确的(根据我遵循的指导原则),这就是为什么我处于死路,有点......
答案 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;
}
如果不起作用,请检查:
Nginx用户具有对网站内容的读取权限。例如,如果您的Nginx用户是www并且您具有root访问权限,请执行以下操作:
# su www
$ cat /var/www/docs-internal/index.html
如果失败,请确保该位置具有正确的所有权和权限。请注意,对于能够浏览目录的用户,该目录必须具有该用户或用户组的执行位。
Nginx用户对文件的读取权限为../sites-available/internal-docs.mysite.com。例如,如果您的Nginx用户是www并且您具有root访问权限,请执行以下操作:
# su www
$ cat /etc/nginx/sites-available/internal-docs.mysite.com
如果失败,请确保配置文件具有正确的所有权。注意:通常Nginx主进程由root运行,并且该进程生成以Nginx用户身份运行的子进程,因此对配置文件的权限不太可能成为问题。
也许您的配置文件名应以" .conf"结尾。 (在我的服务器上,我有以下行:包括conf.d / * .conf; 所以它将不加载任何以" .com&#结尾的conf文件34;
Nginx尝试在其主配置文件中加载../sites-available/中的文件。也许它不会,而是在conf.d目录中(默认)。
您可以在子域上执行ping和nslookup。如果你不能,那么你必须先修复它(DNS,防火墙......)。
答案 1 :(得分:0)
为了别人的缘故 - 我写的配置是正确的,我的问题是两件事:
listen 80
指令,因为已经有另一个配置文件,它指定nginx应该在端口80上侦听。一个人不应该告诉nginx两次在同一个端口上侦听,即使它&# 39; s在两个单独的配置文件中/var/www/docs-internal
文件夹的权限。打开文件夹需要x
(执行)权限,而打开文件需要r
(读取)perm。我必须为此层次结构中的所有文件夹提供相应的权限,以便内容可以全局打开(来自所有人),这基本上是从浏览器访问它。