Nginx没有在启用了站点的站点上提取站点?


103

经过十多个小时的研究,我还没有弄清为什么这行不通!我正在尝试将本地主机移至位于/ etc / nginx / sites-enabled / default中的启用了站点的文件夹。

它是站点可用文件夹中的符号链接。使用以下配置时,使用本地主机:8080作为我的地址,导致“无法连接”

nginx.conf(/usr/local/nginx/conf/nginx.conf):

user  www-data;
worker_processes  2;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    include /etc/nginx/sites-enabled/*; 
}

网站可用(/ etc / nginx /网站可用/默认):

server {
  listen   8080;
  root /home/myusername/myown/customdirectory;
  index index.php index.html index.htm;
  server_name localhost;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        allow ::1;
        deny all;
    }


    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/www;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

如果我将可访问站点的相关信息放到nginx.conf上,则可以正常工作,我只是想不通为什么它不能以这种方式工作?

谢谢!


2
您确定符号链接没有损坏吗?ls -l / etc / nginx / sites-enabled /
catalin.costache 2012年

1
是的,我仔细检查了符号链接,仍然没有运气
Discorick 2012年


Answers:


196

我有同样的问题。这是因为我不小心在符号链接中使用了相对路径。

确定使用完整路径,例如:

ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

对我来说,这也解决了!谢谢!
Sander Versluys 2013年

4
感谢您的救命!
MatTheCat 2013年

4
相对链接中的路径不正确可能比根本上来说是一个问题。例如,如果您的链接不是../以遍历一个目录开头的,请输入sites-available。如果您可以cat使用符号链接并获取输出,则Nginx也应像@Hannes所说的那样阅读它。使用绝对路径只会使不正确的路径变得更加困难。
布赖森2014年

是否没有用于获取文件绝对路径的命令行工具?

不能相信这是问题所在。不会猜出来看看!谢谢!
phouse512 '16

35

从:

include /etc/nginx/sites-enabled/*; 

include /etc/nginx/sites-enabled/*.*; 

解决了我的问题


2
在Ubuntu 16.xx下也为我解决了该问题
Jan Wiemers

2
您是如何知道的?它对我
有用

2
在使用nginx和Docker时,这对我来说是固定的。
欧根(Eugen)'18

1
同上,将其修复在ubuntu / trusty64映像上
Bryan A,

2
那是我的问题!但就我而言,它正在寻找* .conf,而我的结局则不同。疯狂,我为此浪费了数小时!
奈杰尔

16

包含sites-available/default在中sites-enabled/default。只需要一行。

sites-enabled/default(新的配置版本?)中:

似乎包含路径是相对于包含它的文件而言的

include sites-available/default;

请参阅include文档


我认为,某些版本的nginx允许仅通过单行包含所包含文件的相对路径来包括/链接到其他文件。(至少这是我一直在使用的某些“继承”配置文件中的样子,直到新的Nginx版本破坏了它们。)

sites-enabled/default(旧的配置版本?)中:

似乎包含路径是相对于当前文件的

../sites-available/default
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.