Nginx ไม่เลือกไซต์ในไซต์ที่เปิดใช้งาน?


103

หลังจากการวิจัยนานกว่า 10 ชั่วโมงฉันยังไม่ทราบสาเหตุว่าทำไมจึงไม่ได้ผล! ฉันพยายามย้าย localhost ไปยังโฟลเดอร์ที่เปิดใช้งานไซต์ซึ่งอยู่ใน / etc / nginx / sites-enable / default

เป็น symlink จากโฟลเดอร์ที่มีไซต์ เมื่อใช้การกำหนดค่าต่อไปนี้ฉันได้รับ "ไม่สามารถเชื่อมต่อ" โดยใช้ 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
แน่ใจหรือว่า symlink ไม่เสีย? ls -l / etc / nginx / sites-enable /
catalin.costache

1
ใช่ฉันตรวจสอบ symlink อีกครั้ง แต่ยังไม่มีโชค
Discorick

ดูเพิ่มเติมที่: stackoverflow.com/questions/17413526/…

ดูเพิ่มเติม: askubuntu.com/questions/1195067/… .
Chris Halcrow

คำตอบ:


198

ผมมีปัญหาเหมือนกัน. เป็นเพราะฉันใช้เส้นทางสัมพัทธ์กับลิงก์สัญลักษณ์โดยบังเอิญ

คุณแน่ใจหรือไม่ว่าคุณใช้เส้นทางแบบเต็มเช่น:

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

สำหรับฉันสิ่งนี้ก็แก้ไขได้เช่นกัน! ขอบคุณ!
Sander Versluys

4
ขอบคุณที่ช่วยชีวิตฉัน!
MatTheCat

4
อาจมีปัญหากับเส้นทางที่ไม่ถูกต้องในลิงก์สัมพัทธ์มากกว่าที่จะเป็นลิงก์แบบสัมพัทธ์เลย ตัวอย่างเช่นหากการเชื่อมโยงของคุณไม่ได้เริ่มต้นด้วยการสำรวจหนึ่งไดเรกทอรีแล้วป้อน../ sites-availableหากคุณสามารถcatsymlink และรับเอาต์พุต Nginx ควรอ่านตามที่ @Hannes กล่าว การใช้เส้นทางสัมบูรณ์จะทำให้เส้นทางที่ไม่ถูกต้องทำได้ยากขึ้นมาก
Bryson

ไม่มีเครื่องมือบรรทัดคำสั่งสำหรับรับเส้นทางสัมบูรณ์ของไฟล์หรือไม่?

ไม่อยากจะเชื่อเลยว่านี่เป็นปัญหา คงไม่ต้องเดาให้ดู! ขอบคุณ!
phouse512

37

เปลี่ยนจาก:

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

ถึง

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

แก้ไขปัญหาของฉัน


2
แก้ไขปัญหาให้ฉันเช่นกันภายใต้ Ubuntu 16.xx
ม.ค. Wiemers

2
คุณคิดออกได้อย่างไร มันใช้ได้ผลสำหรับฉัน แต่มันไม่ชัดเจน
ไกล

2
สิ่งนี้ได้รับการแก้ไขสำหรับฉันเมื่อเล่นกับ nginx และ Docker
Eugen

1
ditto แก้ไขบน ubuntu / trusty64 อิมเมจ
Bryan A

2
นั่นเป็นปัญหาสำหรับฉัน! แต่ในกรณีของฉันมันกำลังมองหา * .conf และของฉันมีตอนจบที่แตกต่างกัน บ้าฉันเสียเวลาไปหลายชั่วโมงกว่านี้!
ไนเจล

16

รวมsites-available/defaultอยู่ในsites-enabled/default. ต้องใช้เพียงบรรทัดเดียว

ในsites-enabled/default(เวอร์ชัน config ใหม่?):

ดูเหมือนว่าเส้นทางการรวมจะสัมพันธ์กับไฟล์ที่รวมไว้

include sites-available/default;

ดูเอกสารinclude


ฉันเชื่อว่า nginx บางเวอร์ชันอนุญาตให้รวม / ลิงก์ไปยังไฟล์อื่น ๆ โดยใช้บรรทัดเดียวที่มีพา ธ สัมพัทธ์ไปยังไฟล์ที่รวม (อย่างน้อยนั่นก็คือสิ่งที่ดูเหมือนในไฟล์กำหนดค่า "สืบทอด" บางไฟล์ที่ฉันใช้อยู่จนกระทั่งเวอร์ชัน nginx ใหม่พัง)

ในsites-enabled/default(config เวอร์ชันเก่า?):

ดูเหมือนว่าเส้นทางการรวมจะสัมพันธ์กับไฟล์ปัจจุบัน

../sites-available/default
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.