Nginx không chọn trang web trong các trang web được kích hoạt?


103

Sau hơn 10 giờ nghiên cứu, tôi vẫn chưa tìm ra lý do tại sao điều này không hoạt động! Tôi đang cố gắng di chuyển máy chủ cục bộ của mình sang thư mục hỗ trợ các trang web của tôi nằm trong / etc / nginx / sites-enable / default.

Nó là một liên kết tượng trưng từ thư mục có sẵn của các trang web. Khi sử dụng cấu hình sau, tôi nhận được thông báo "không thể kết nối" bằng cách sử dụng localhost: 8080 làm địa chỉ của tôi

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/*; 
}

trang web có sẵn (/ etc / nginx / trang web có sẵn / mặc định):

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;
    }
}

Tôi có thể làm cho điều này hoạt động nếu tôi đưa thông tin liên quan từ các trang web có sẵn vào nginx.conf, tôi chỉ không thể tìm ra lý do tại sao nó không hoạt động theo cách này?

Cảm ơn!


2
Bạn có chắc rằng liên kết biểu tượng không bị hỏng không? ls -l / etc / nginx / sites-enabled /
catalin.costache

1
Có, tôi đã kiểm tra lại liên kết tượng trưng, vẫn không có may mắn
Discorick


Câu trả lời:


197

Tôi đã từng gặp vấn đề tương tự. Đó là vì tôi đã vô tình sử dụng một đường dẫn tương đối với liên kết tượng trưng.

Bạn có chắc mình đã sử dụng các đường dẫn đầy đủ, ví dụ:

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

Đối với tôi điều này cũng đã sửa nó! Cảm ơn!
Sander Versluys

4
Cảm ơn vì đã cứu mạng tôi!
MatTheCat

4
Có thể là một vấn đề với một đường dẫn không chính xác trong liên kết tương đối hơn là một liên kết tương đối. Ví dụ: nếu liên kết của bạn không bắt đầu bằng ../để duyệt qua một thư mục, thì hãy nhập sites-available. Nếu bạn có thể catliên kết biểu tượng và nhận đầu ra, Nginx cũng nên đọc nó như @Hannes đã nói. Sử dụng một đường dẫn tuyệt đối chỉ đơn giản là làm cho một đường dẫn không chính xác trở nên khó thực hiện hơn nhiều.
Bryson

không có công cụ dòng lệnh để lấy đường dẫn tuyệt đối của một tệp?

Không thể tin rằng đây là vấn đề. Sẽ không đoán để kiểm tra điều này! Cảm ơn!
phouse512

36

Thay đổi từ:

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

đến

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

đã khắc phục sự cố của tôi


2
đã khắc phục sự cố cho tôi cũng như trong Ubuntu 16.xx
Jan Wiemers

2
làm thế nào bạn tìm ra điều này? Nó có hiệu quả với tôi, nhưng điều này không rõ ràng
afarley

2
điều này đã được khắc phục cho tôi khi chơi với nginx và Docker.
Eugen

1
ditto, đã sửa nó trên ubuntu / trusty64 image
Bryan A

2
Đó là vấn đề đối với tôi! Nhưng trong trường hợp của tôi, nó đang tìm kiếm * .conf và của tôi có một kết thúc khác. Điên rồ, tôi đã lãng phí hàng giờ cho việc này!
Nigel

16

Bao gồm sites-available/defaulttrong sites-enabled/default. Nó chỉ yêu cầu một dòng.

Trong sites-enabled/default(phiên bản cấu hình mới?):

Có vẻ như đường dẫn bao gồm liên quan đến tệp bao gồm nó

include sites-available/default;

Xem includetài liệu .


Tôi tin rằng một số phiên bản nhất định của nginx cho phép bao gồm / liên kết đến các tệp khác hoàn toàn bằng cách có một dòng duy nhất với đường dẫn liên quan đến tệp được bao gồm. (Ít nhất đó là những gì nó trông giống như trong một số tệp cấu hình "kế thừa" mà tôi đang sử dụng, cho đến khi một phiên bản nginx mới phá vỡ chúng.)

Trong sites-enabled/default(phiên bản cấu hình cũ?):

Có vẻ như đường dẫn bao gồm liên quan đến tệp hiện tại

../sites-available/default
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.