Nginx не збирає сайт на веб-сайтах, що підтримуються?


103

Після більш ніж 10 годин досліджень я не з'ясував, чому це не працює! Я намагаюся перемістити мій localhost до папки з підтримкою сайтів, яка знаходиться в / etc / nginx / включеному / за замовчуванням сайтів.

Це символьне посилання з доступної для сайтів папки. Під час використання наступної конфігурації я отримую "не в змозі підключитися", використовуючи 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/*; 
}

доступні сайти (/ 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;
    }
}

Я можу це працювати, якщо розміщу відповідну інформацію з сайтів, доступних до nginx.conf, я просто не можу зрозуміти, чому це не працює таким чином?

Дякую!


2
Ви впевнені, що симпосилання не порушена? ls -l / etc / nginx / включено сайти /
catalin.costache

1
Так, я подвійно перевірив
симпосилання


Відповіді:


198

У мене була така ж проблема. Це було тому, що я випадково використав відносний шлях із символічною ланкою.

Ви впевнені, що використовували повні шляхи, наприклад:

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

Для мене це теж виправило! Дякую!
Сандер Верслуйс

4
Дякую, що врятували мені життя!
MatTheCat

4
Може бути проблема з неправильним шляхом у відносній ланці більше, ніж взагалі відносною ланкою. Наприклад, якщо ваше посилання не починається з ../проходження однієї директорії, тоді введіть sites-available. Якщо ви можете catотримати симпосилання і отримати вихід, Nginx повинен прочитати його так само, як сказав @Hannes. Використання абсолютного шляху просто ускладнює проходження неправильного шляху.
Брайсон

чи не існує інструменту командного рядка для отримання абсолютного шляху до файлу?

Не можу повірити, це було проблемою. Не здогадався б це перевірити! Дякую!
phouse512

36

Перехід від:

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

до

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

виправили мою проблему


2
виправили цю проблему і для мене під Ubuntu 16.xx
Jan Wiemers

2
як ти це зрозумів? Це працювало для мене, але це не очевидно
afarley

2
це для мене виправлено під час гри з nginx та Docker.
Євген

1
ditto, виправили це на зображенні 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.