我有一些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; }
如果这不起作用,请检查:
该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”结尾(在我的服务器上,我有以下行: include conf.d / * 。conf ;所以它不会加载任何以“.com”结尾的conf文件。
Nginx尝试在主配置文件中加载../sites-available/中的文件。 也许它不会,而是看在conf.d目录中(默认)。
你可以在子域上执行ping和nslookup。 如果你不能,那么你必须先解决(DNS,防火墙…)。
为了别人 – 我写的配置是正确的,我的问题有两件事:
listen 80
指令,因为还有另一个配置文件,指定nginx应该监听端口80.不应该告诉nginx两次侦听相同的端口,即使它在两个单独的配置文件 /var/www/docs-internal
文件夹的权限。 打开文件夹需要x
(执行)权限,而打开文件需要r
(读)perm。 我必须为这个层次结构中的所有文件夹提供相应的权限,以便内容可以从全局(全部)开放,这基本上是从浏览器访问它的。