2012-12-17 26 views
6

Tôi có một máy chủ nginx xử lý các yêu cầu PHP, nhưng nó được cấu hình để nghe trên một cổng không chuẩn (cổng 12345 hoặc một cái gì đó). Tôi không thể thay đổi cổng nghe vì IT của công ty nói, "Không."301 Chuyển hướng trên máy nginx đang chạy cổng không chuẩn sau một proxy

Có một proxy trong trung tâm dữ liệu cho phép gửi các yêu cầu từ www.domain.com:80 vào hộp nginx trên cổng 12345.

Tôi có một số tĩnh 301 chuyển hướng mà tôi cần phải đặt tại chỗ, nhưng Tôi nhận được hành vi bất ngờ.

mẫu chuyển hướng trong site.conf "máy chủ {}" khối:

rewrite ^/foo$ /bar/foo/ permanent; 

Khi tôi cố gắng để đi đến www.domain.com/foo, chuyển hướng xảy ra, nhưng nó cố gắng để chuyển tiếp các trình duyệt để www.domain.com:12345/bar/foo/

Câu hỏi của tôi là, làm thế nào tôi có thể nhận nginx chuyển hướng người dùng đến đúng cổng (www.domain.com/bar/foo/)?

Có thể một câu hỏi hay hơn là, cách chính xác để làm những gì tôi yêu cầu là gì? Có hơn 50 chuyển hướng cần phải đi vào và tôi không muốn tạo phần "vị trí" cho mỗi chuyển hướng đó.

Trả lời

2

Bạn có thể viết lại rõ ràng hơn. Hãy thử như sau:

rewrite ^/foo/ $scheme://www.domain.com:80/bar$request_uri permanent; 

tôi đã giả định rằng bạn có nghĩa là sử dụng ^/foo/ thay vì ^/foo$, vì ^/foo$ là một trường hợp rất cụ thể. Chỉ cần sửa lại khi cần.

+1

Cảm ơn, Kevin. Tôi thực sự có nghĩa là ^/foo/bởi vì đó là một url cụ thể mà tôi đang nhắm mục tiêu (theo yêu cầu tiếp thị). Nó hoạt động tốt, và tôi sửa đổi nó một chút: viết lại ^/foo/$ scheme: // $ server_name: 80/bar/vĩnh viễn; – Jason

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