Nginx: đường dẫn gốc liên quan đến tập tin conf


17

Có thể chỉ định rootđường dẫn liên quan đến tệp conf chứa không?

Chúng tôi đang phát triển một ứng dụng web và giữ app-nginx.conftệp có cấu hình dành riêng cho ứng dụng trong thư mục của dự án. Tôi muốn có thể bao gồm tệp này vào chính nginx.confvà có rootđường dẫn tham chiếu đúng thư mục con của dự án. Thí dụ:

# /etc/nginx/nginx.conf
http {
    include /absolute/path/to/app/app-nginx.conf
}


# /absolute/path/to/app/app-nginx.conf
server {
    server_name localhost;
    listen 9090;

    root ./app;
}

Sau khi bắt đầu nginx với cấu hình tương tự, nginx cố gắng giải quyết ./appđường dẫn liên quan đến thư mục cài đặt nginx ( /usr/local/Cellar/nginx/1.4.3/trong trường hợp của tôi), chứ không phải vào thư mục của ứng dụng.

Câu trả lời:


11

Có thể chỉ định đường dẫn gốc liên quan đến tệp conf chứa không?

Câu trả lời ngắn gọn: Không.

Câu trả lời dài: Nginx, theo mặc định, chỉ biết về đường dẫn như --prefix--conf-pathđược đặt tại thời điểm biên dịch (ref: https://nginx.org/en/docs/configure.html ). Chúng ta có thể tìm thấy các đường dẫn khác nhau được Nginx sử dụng bằng cách chạy lệnh nginx -V(đó là chữ "V"). Vì vậy, --conf-pathlà nơi nginx.conftập tin chính nằm và đường dẫn đó được sử dụng cho bất kỳ đường dẫn tương đối nào.

Theo tài liệu chính thức ( https://nginx.org/r/root ), một lệnh rootcó thể chứa các biến khác, mặc dù.

Cảm ơn @cyker đã làm rõ sau 5 năm đăng câu trả lời ban đầu!


Cảm ơn bạn, Pothi. Thật không may, không có lựa chọn nào phù hợp với tôi. --prefixcó thể ảnh hưởng đến các máy chủ nginx khác và theo quan điểm cá nhân của tôi khó hơn một chút để quản lý so với tệp cấu hình. Và nginx không cho phép tạo các biến tùy chỉnh với ngữ cảnh setbên ngoài chỉ thị server, vì vậy tôi không thể di chuyển đường dẫn tuyệt đối từ tệp app-nginx.conf của mình.
Anton Moiseev

Vì vậy, đường dẫn đó được sử dụng cho bất kỳ đường dẫn tương đối. Tôi nghĩ rằng điều này là không chính xác. Có vẻ như nginx sẽ sử dụng cấu hình dir cho các tùy chọn includessl_certificate, ví dụ, nhưng sẽ sử dụng dir tiền tố cho các tùy chọn như root. Tôi dường như không đưa ra một danh sách đầy đủ về mỗi tùy chọn sử dụng.
Cyker

@Cyker Bạn nói đúng. Cập nhật câu trả lời ngay bây giờ. Tất nhiên, nó không hoàn thành. Nhưng, tốt hơn so với câu trả lời ban đầu (điều đó thực sự sai / không chính xác).
Pothi Kalimuthu

Tôi đang đọc Nginx từ Người mới bắt đầu đến Chuyên gia, nó lưu ý rằng: "Bạn đã thấy việc sử dụng lệnh gốc trong một khối vị trí. Lệnh gốc cho Nginx trả lại /image/myimage.jpg thay vì đường dẫn đủ điều kiện / etc / nginx / html / app1 / image / myimage.jpg. " vậy IMHO có nghĩa là cấu hình Nginx hỗ trợ các đường dẫn tương đối?
Nữ web

Ở đây, câu hỏi dành riêng cho chỉ thị "root" và liệu nó có thể hỗ trợ "đường dẫn tương đối đến tập tin conf" hay không.
Pothi Kalimuthu

0

Tôi chưa tìm thấy cách sử dụng các đường dẫn tương đối hoặc xác định các biến toàn cục, nhưng mẹo nhỏ này giải quyết vấn đề của tôi.


3
Bí quyết nhỏ nào?
Michael Hampton

Tôi không thể xác định biến, nhưng tôi có thể sử dụng mapchỉ thị với một defaultgiá trị sẽ đóng vai trò của biến cho tôi.
Anton Moiseev
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.