Làm cách nào để đặt máy chủ mặc định cho nginx?


11

Tôi đang cố gắng tìm ra cách đặt máy chủ mặc định cho cài đặt nginx của mình. Tôi tìm thấy bài viết này trong Wiki nginx:

http://wiki.nginx.org/NginxVirtualhostExample#A_Default_Catchall_Virtual_host

Thật không may, điều này không hoạt động. Sau khi khởi động lại tôi nhận được điều này:

Restarting nginx: nginx: [emerg] unknown directive "http" in /etc/nginx/sites-enabled/catchall:1
nginx: configuration file /etc/nginx/nginx.conf test failed

Sau khi xóa chỉ thị http, tôi nhận được điều này:

Restarting nginx: nginx: [emerg] unknown log format "main" in /etc/nginx/sites-enabled/catchall:7
nginx: configuration file /etc/nginx/nginx.conf test failed

Tôi đang dùng Ubuntu 10.04.3, nơi tôi đang sử dụng PPA nginx chính thức. Phiên bản 1.0.9 của nginx đang chạy.

Câu trả lời:


16

Các cấu hình Nginx dựa trên một loạt các khối lồng nhau. Chỉ nên có một khối http. Điều này thường được xác định trong /etc/nginx/nginx.conf - tất cả các tệp được bao gồm (ví dụ: từ các trang web có sẵn) được bao gồm trong khối http này. Để thiết lập máy chủ mặc định / bắt tất cả, bạn chỉ cần phần khối máy chủ cho máy chủ mặc định của mình. Điều này được thực hiện bằng cách thêm 'mặc định' vào chỉ thị nghe. Ngoài ra, thông thường sử dụng tên máy chủ sẽ không khớp với bất kỳ tên thật nào - thường là dấu gạch dưới ("_"), nhưng các ký tự khác cũng được chấp nhận. Nếu bạn bỏ qua tham số mặc định, khối máy chủ đầu tiên được coi là mặc định. (Xem hướng dẫn của nginx đến server_names để biết thêm thông tin)

Cấu hình nginx mặc định ('bản gốc' trong ngữ cảnh này) có thể bao gồm một khối máy chủ (bắt tất cả) mặc định trong nginx.conf mà bạn có thể định cấu hình.

Đối với lỗi thứ hai, đảm bảo rằng 'chính' được xác định trong nginx.conf (một dòng nên bắt đầu bằng 'log_format main ...' (và tất nhiên, kiểm tra dấu ngoặc của bạn). Bạn có thể bỏ qua toàn bộ dòng 'access_log' nếu bạn không muốn yêu cầu máy chủ mặc định của mình được ghi lại (hoặc có thể thay đổi định dạng bằng cách xác định định dạng mới).


Đó là nhanh chóng. Cảm ơn. Gonna thử cái này vào ngày mai sau khi ngủ một chút ;-).
Ulf Klose

Sử dụng _ vì server_name không thêm vào "tính mặc định" của máy chủ {}, nó thường được sử dụng để giữ cho sản phẩm không bị xung đột với các khối máy chủ khác, do đó không có 'ghi đè' về cờ mặc định trong lệnh nghe. Đó là điều duy nhất đánh dấu rõ ràng máy chủ là mặc định. Tuy nhiên, +1
kolbyjack

@kolbyjack - Cảm ơn bạn đã sửa lỗi - Tôi sẽ sửa nó trong câu trả lời của tôi.
cyberx86

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.