duy trì chuyển hướng trong nginx từ nguồn bên ngoài


15

Tôi đang ở trong tình huống để cung cấp cho bộ phận tiếp thị của chúng tôi cơ hội để duy trì chuyển hướng của họ bằng cách riêng của họ. Cho đến bây giờ, họ đã chuyển thông tin đến bộ phận CNTT và chúng tôi đã duy trì thông tin đó cho họ nginx.conf.

Một số kẻ này khá quen thuộc với các chuyển hướng trong IIS hoặc thậm chí trong Apache nhưng không có tùy chọn nào cho phép họ truy cập trực tiếp vào cấu hình nginx.

Tôi thấy rằng không có hỗ trợ nginx cho .htaccesscác tệp mà tôi có thể cấp quyền truy cập và tôi cũng không muốn cấp quyền truy cập ghi vào tệp conf mà nginx bao gồm. Tôi hy vọng rằng việc tiếp thị của chúng tôi sẽ phá vỡ thiết lập nginx của chúng tôi trong vài giờ ...

Có một khả năng an toàn mà không cho phép họ truy cập vào trung tâm của bộ cân bằng tải của chúng tôi không?

Câu trả lời:


24

Không có cách nào được xây dựng để cách ly đúng cấu hình viết lại như thế. Có ba cách tiếp cận bạn có thể thực hiện.

Mô-đun bản đồ bao gồm

Các mô-đun đồ cho phép bạn bao gồm ánh xạ từ một tập tin riêng biệt. Nginx vẫn phải được tải lại sau khi tệp được thay đổi và tệp ánh xạ phải chính xác về mặt cú pháp, nhưng nó giới hạn những gì có thể được thực hiện.

nginx.conf:

map $uri $new {
    include /etc/nginx/marketing.map;
}

server {
    ...
    if ($new) {
        rewrite ^ $new redirect;
    }
    ...
}

marketing.map:

/about  /company/about-us;
~^/people/(?<person>.*)$    /company/people/$person;

Cấu hình tiền xử lý

Đầu tiên là viết một kịch bản chuyển đổi các chuyển hướng từ một số định dạng mà bạn xác định thành cấu hình nginx. Ví dụ: đưa ra một danh sách các chuyển hướng phân tách không gian:

/foo/(.*) /bar/$1

và một kịch bản:

#!/bin/sh
while read SOURCE DEST; do
    echo "rewrite $SOURCE $DEST permanent;"
done < redirects.txt > redirects.conf

để hình thành cấu hình sau:

rewrite /foo/(.*) /bar/$1 permanent;

Sau đó, bạn muốn chạy nginx -ttrên toàn bộ cấu hình để kiểm tra xem nó có hợp lệ không trước khi tải lại.

Đang xử lý

Tùy chọn thứ hai là sử dụng ngx_lua , ngx_perl hoặc ngx_js để thực hiện đọc và xử lý cấu hình chuyển hướng của bạn trong chính nginx. Ví dụ, lệnh rewrite_by_luacho phép bạn thực thi mã Lua để xây dựng lại. Tuy nhiên, bạn cần cẩn thận về sự phù hợp vì bạn sẽ diễn giải mã cho mọi yêu cầu.


1
Mô-đun bản đồ cung cấp một cách hạn chế một chút để định cấu hình chuyển hướng.
mgorven

1
Phương pháp bản đồ có vẻ rất hứa hẹn! Vì vậy, tôi sẽ bắt đầu viết một trang web đơn giản để duy trì tệp bản đồ. Cảm ơn bạn!
Sascha

2
Đáng buồn thay, tại thời điểm này (mùa thu 2014), dự án ngx_js đã được chạm đến lần cuối cách đây hơn hai năm. ngx_lua là rất tích cực và duy trì tốt, tuy nhiên.
Ville

Bây giờ nginScript có sẵn (chất lượng alpha) cho phép sử dụng tập hợp con của js.
lifeisfoo
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.