Điểm:2

Nginx chuyển hướng đến một tên miền khác mà không để lại dấu uri

lá cờ us

tôi đang cố gắng để có được http://foo.mydomain.xyz/one/two/three.json bằng cách gọi http://bar.mydomain.xyz/cat/one/two/three.json. Tôi đang sử dụng cấu hình sau:

người phục vụ {
        nghe 80;
        nghe [::]:80;
        server_name bar.mydomain.xyz;
        tắt_chuyển hướng tuyệt đối;

        địa điểm / {
          proxy_pass http://localhost:8080;
        }

        địa điểm /mèo {
          viết lại ^(/cat) http://foo.mydomain.xyz$request_uri vĩnh viễn;
        }
}
người phục vụ {
        nghe 80;
        nghe [::]:80;
        server_name foo.mydomain.xyz;

        địa điểm / {
          proxy_pass http://localhost:7070;
        }
}

Sử dụng cấu hình này khi tôi đang gọi: http://bar.mydomain.xyz/cat/ nó đang chuyển hướng tôi đến http://foo.mydomain.xyz/ thành công. Nhưng khi tôi đang gọi http://bar.mydomain.xyz/cat/one/two/three.json nó đang trở lại http://foo.mydomain.xyz/cat/one/two/three.json. chú ý /con mèo không bị xóa khỏi url. Làm sao tôi có thể giải quyết việc này?

Richard Smith avatar
lá cờ jp
`$request_uri` là URI gốc, bạn cần nắm bắt phần sau của URI trong regex `rewrite`. Hãy thử: `viết lại ^/cat/(.*)$ http://foo.mydomain.xyz/$1 vĩnh viễn;`
lá cờ us
@RichardSmith Bạn có thể đăng câu trả lời này dưới dạng câu trả lời. Cảm ơn
Điểm:1
lá cờ us

Một cách tiếp cận khác là nắm bắt phần trong địa điểm chỉ thị:

địa điểm / {
    proxy_pass http://localhost:8080;
}

vị trí ~ ^/cat(/.+)$ {
    trả lại 301 http://foo.example.com$1$is_args$args;
}
lá cờ us
Nó đang trả về `số đối số không hợp lệ trong lệnh "return" trong /etc/nginx/sites-enabled/mydomain.com:19`
lá cờ us
Xin lỗi, lỗi của tôi, tôi đã để lại một từ `vĩnh viễn` ở đằng kia.
lá cờ us
@tero-kilman, trong trường hợp của tôi, tôi đang cố truy cập `https://foo.mydomain.xyz/bar/v1/search?text=mytext&size=25` từ `https://bar.mydomain.xyz/v1 /search?text=mytext&size=25`. Khi tôi thử `return`, nó chỉ chuyển hướng đến phần `https://bar.mydomain.xyz/v1/search`. Các tham số không đi qua.
lá cờ us
Tôi đã thêm các đối số vào chuyển hướng trong câu trả lời của mình.
Điểm:1
lá cờ jp

Của bạn viết lại tuyên bố là thay đổi tên miền chứ còn gì nữa. Giá trị của $request_uri là URI ban đầu bao gồm URI hàng đầu /con mèo phần. Bạn cần nắm bắt phần sau của URI trong biểu thức chính quy.

Ví dụ:

viết lại ^/cat/(.*)$ http://foo.example.com/$1 vĩnh viễn;

Hoặc có thể:

viết lại ^/cat(?:/(.*))?$ http://foo.example.com/$1 vĩnh viễn;
lá cờ us
trong trường hợp của tôi, tôi đang cố truy cập `https://foo.mydomain.xyz/bar/v1/search?text=mytext&size=25` từ `https://bar.mydomain.xyz/v1/search?text= mytext&size=25`.Khi tôi thử `viết lại`, nó chỉ chuyển hướng đến phần `https://bar.mydomain.xyz/v1/search`. Các tham số không đi qua.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.