Nginx没有在网站启用中获取网站?

Dis*_*ick 96 nginx

经过10多个小时的研究,我还没弄清楚为什么这不起作用!我正在尝试将我的localhost移动到我的启用站点的文件夹,该文件夹位于/ etc/nginx/sites-enabled/default中.

它是来自sites-available文件夹的符号链接.使用以下配置时,我使用localhost: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/*; 
}
Run Code Online (Sandbox Code Playgroud)

sites-available(/ etc/nginx/sites-available/default):

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我将相关信息从nginx.conf的可用站点中提取出来,我可以得到这个工作,我只是想不通为什么它不能这样工作?

谢谢!

Sam*_*Sam 186

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

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

ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!无法相信相对链接不起作用.吴 (39认同)
  • 谢谢你救命! (4认同)
  • 可能是相对链接中路径不正确的问题,而不是相对链接.例如,如果你的链接不以`../`开头遍历一个目录,那么输入`sites-available`.如果你可以'cat`符号链接并获得输出,Nginx也应该阅读它@Hannes说.使用绝对路径只会使不正确的路径变得更加困难. (4认同)
  • @omouse`realpath` (2认同)
  • 哇!这正是为什么[启用站点是邪恶的](//serverfault.com/questions/527630/what-is-the- Different-usages-for-sites-available-vs-the-conf-d-directory-for- NGI/870709#870709)! (2认同)

小智 23

改变自:

include /etc/nginx/sites-enabled/*; 
Run Code Online (Sandbox Code Playgroud)

include /etc/nginx/sites-enabled/*.*; 
Run Code Online (Sandbox Code Playgroud)

解决了我的问题

  • 如果您想知道为什么这会产生影响,通过使用“*.*”,您将忽略“/etc/nginx/sites-enabled/default”,从而不会加载默认虚拟主机。 (3认同)
  • 在Ubuntu 16.xx下也为我解决了该问题 (2认同)
  • 你是怎么想出来的?它对我有用,但这并不明显 (2认同)
  • 在使用nginx和Docker时,这对我来说是固定的。 (2认同)
  • 这对我来说就是问题!但就我而言,它正在寻找 *.conf,而我的结局却不同。太疯狂了,我为此浪费了几个小时! (2认同)

Joe*_*rra 16

包括sites-available/defaultsites-enabled/default.它只需要一行.

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

包含路径似乎与包含它的文件相关

include sites-available/default;
Run Code Online (Sandbox Code Playgroud)

请参阅include文档.


我相信某些版本的nginx允许包含/链接到其他文件,纯粹是通过一条线与包含文件的相对路径.(至少那是我一直在使用的一些"继承"配置文件中的样子,直到一个新的nginx版本打破它们.)

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

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

../sites-available/default
Run Code Online (Sandbox Code Playgroud)