2013-04-15 45 views
55

Tôi vừa cài đặt máy chủ Ubuntu 12.04 và nginx 1.2.7, đã xóa default khỏi các trang web đã bật và thêm tệp của riêng tôi vào sites-available và liên kết tượng trưng tại sites-enabled. Sau đó khởi động lại nginx.nginx không nghe cổng 80

Sự cố: Tuy nhiên, việc truy cập URL không tải trang web. netstat -nlp | grep nginxnetstat -nlp | grep 80 đều không trả về kết quả nào! lsof -i :80 cũng không trả về gì cả. Một từ một máy chủ khác trả về địa chỉ IP chính xác để nó không phải là một vấn đề DNS. Tôi đã có thể kết nối với apache mà tôi đã ngừng dịch vụ của mình. nhật ký nginx cũng không hiển thị gì cả.

Tôi nên khắc phục sự cố này như thế nào?

/etc/nginx/site-available/mysite.com

server { 
    listen 80; 
    server_name www.mysite.com mysite.com *.mysite.com; 
    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 
    root /var/www/mysite/public; 

    index index.php index.html; 

    location/{ 
     try_files $uri $uri/ /index.php?$args ; 
    } 
    location ~ \.php$ { 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
     fastcgi_read_timeout 300; 
    } 

} 
+0

mọi thứ trong nhật ký? – mata

+0

Có thực sự đang chạy không? Bạn đã bắt đầu nó với 'sudo' chưa? –

+7

Xin đừng downvote một câu hỏi chỉ vì bạn không biết câu trả lời. Tôi đang gặp vấn đề tương tự. Không có gì trong nhật ký truy cập ... nó đang nghe trên *: 80. Không có lỗi trong nhật ký lỗi gỡ lỗi. Và có, @DondiMichaelStroma nó đang chạy. (lol) – Swivel

Trả lời

4

Bạn có lẽ ràng buộc nginx để cổng 80 hai lần. Đó có phải là tệp cấu hình đầy đủ của bạn không? Bạn không có một tuyên bố nghe cổng 80?

+0

Tôi đã cố gắng để lưu trữ GitLab trên cổng 80 nhưng phát hiện ra cũng có một trang web "mặc định" ràng buộc với cổng đó. Sau khi loại bỏ sau này máy chủ GitLab của tôi đã chạy tốt. – riezebosch

+0

@riezebosch xoá cấu hình của trang web đó sẽ hoạt động, nhưng bạn cũng có thể sử dụng các tên máy chủ khác nhau trong trường hợp bạn muốn nghe cổng 80 nhiều lần – Andres

1

Bạn đã kiểm tra xem nhị phân nginx của mình có thực sự tồn tại không? vui lòng kiểm tra xem

#whereis nginx 

xuất ra đường dẫn nhị phân và kiểm tra đường dẫn này với init script của bạn từ /etc/init.d/nginx. ví dụ.

DAEMON=/usr/sbin/nginx 

(Trong init script của tôi "test -x $ DAEMON || exit 0" được gọi và trong mọi trường hợp kịch bản này trở gì - nhị phân của tôi đã hoàn toàn mất tích)

19

Nếu các bản ghi của bạn là im lặng về vấn đề, bạn có thể không bao gồm thư mục hỗ trợ trang web. Một cách đơn giản để cho biết trang web đang được tải là đặt đường dẫn nhật ký lỗi/truy cập trong khối máy chủ của bạn thành đường dẫn duy nhất, tải lại nginx và kiểm tra xem tệp có được tạo hay không.

Đảm bảo chỉ thị sau đây tồn tại trong ngữ cảnh http trong /etc/nginx/nginx.conf.

http { 
    ... 
    include /etc/nginx/sites-enabled/*; 
} 
+2

Điều đơn giản như vậy để bỏ qua. Cảm ơn bạn đã đề cập đến nó! – Hayden

+0

Cảm ơn rất nhiều! Bạn tiết kiệm của tôi ngày – brunocascio

103

Tôi đã gặp phải vấn đề tương tự, giải pháp là tôi không liên kết chính xác tệp siteconf của mình. Hãy thử chạy vim /etc/nginx/sites-enabled/mysite.com — bạn có thể truy cập vào nó không? Tôi đã nhận được "Quyền bị từ chối."

Nếu không chạy:

rm /etc/nginx/sites-enabled/mysite.com 
ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/mysite.com 
+41

Điều này cố định nó cho tôi! Rõ ràng khi bạn không nhập tên đầy đủ trong đối số thứ hai, tức là 'ln -s /etc/nginx/sites-available/mysite.com/etc/nginx/sites-enabled/', nó tạo ra loại giả mạo symlink, mà nginx chokes trên. Lạ nhưng có thật. –

+0

Đây cũng là giải pháp cho tôi. Stumbled khi thread này trong khi googling cho câu trả lời. – mewm

+1

Đây cũng là một giải pháp cho tôi. Tôi đã chạy trong vòng tròn cho giờ cố gắng để sửa chữa một cài đặt nginx. Bravo, thưa quý ông! –

3

Tôi chạy vào cùng một vấn đề, tôi nhận được một lỗi Failed to load resource: net::ERR_CONNECTION_REFUSED khi kết nối qua HTTP, nhưng tốt qua HTTPS. Ran netstat -tulpn và thấy nginx không ràng buộc với cổng 80 cho IPv4. Đã hoàn thành mọi thứ được mô tả ở đây. Hóa ra là một cái gì đó rất ngu ngốc:

Đảm bảo rằng tệp sites-available với default_server được bật chưa.

Hy vọng điều này đã lưu một số kẻ ngốc kém khác ra khỏi đó một thời gian.

1

Dấu chấm phẩy ; bị thiếu trong /etc/nginx/nginx.conf để lấy mẫu trên dòng trước khi include /etc/nginx/servers-enabled/*; chỉ có thể bỏ qua thông số này và kiểm tra nginx -t sẽ thành công.

Vì vậy, chỉ cần kiểm tra xem tất cả các hướng dẫn trong /etc/nginx/nginx.conf được kết thúc bằng dấu chấm phẩy ;.

Các vấn đề liên quan