viết lại tên miền phụ nginx


8

Một câu hỏi quy tắc viết lại nginx khác

Làm thế nào tôi có thể viết lại từ http://www.*.domain.comđến http://*.domain.com?

cảm ơn trước

- Nợ

BIÊN TẬP:

Tôi xin lỗi tôi đã không thấy định dạng dệt loại bỏ * khỏi câu hỏi của tôi. Tôi đã sửa nó bây giờ. Những gì tôi cần làm là đi từ www.joe.domain.com đến joe.domain.com, nơi joe có thể là bất kỳ từ nào.

Câu trả lời:


7

Tầm quan trọng của giai đoạn thêm trước domain.com là gì? Là mục tiêu để loại bỏ www khỏi URL? Nếu vậy, điều này nên làm thủ thuật:

if ($host ~* www\.(.*)) {
  set $host_without_www $1;
  rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo'
}

Đừng quên: sudo /etc/init.d/nginx restarttải nó lên

Nguồn: NGINX Wiki


Tôi xin lỗi tôi đã không thấy định dạng dệt loại bỏ * khỏi câu hỏi của tôi. Những gì tôi cần làm là đi từ www.joe.domain.com đến joe.domain.com, nơi joe có thể là bất kỳ từ nào. Vì vậy, bạn đã đúng, tôi chỉ cần xóa www.
deb

12

Đó là một chút hack.

Cách nhanh nhất để thực hiện khôn ngoan sẽ là

server {
  server_name www.domain.com;
  rewrite ^ http://domain.com$request_uri permanent;
}

Bạn lưu một trận đấu regex cũng như hai lần chụp cộng với bạn có được lợi thế của nginx bằng cách sử dụng bảng băm để tra cứu khối máy chủ phù hợp.

Ngoài ra, bạn không cần phải khởi động lại nginx - tải lại là tất cả những gì cần thiết, và ai muốn có nhiều thời gian hơn yêu cầu?


+1 có ý nghĩa ... chúc mừng
iainlbc

1
Đây không phải là một hack. Nginx thực hiện tra cứu rất nhanh thông qua tên máy chủ, vì vậy đây thực sự là cách tiếp cận nhanh nhất.
Alexander Azarov

1
@Alaz Đó là câu trả lời cho câu trả lời do iainlbc cung cấp, ý tôi là nếu điều kiện là hack, không phải máy chủ tra cứu tôi đề nghị.
Martin Fjordvald


1

Giải pháp của Martin F rất tốt và tốt, cho đến khi bạn có hàng trăm tên miền. Tuy nhiên, tôi sẽ đề nghị đi theo một cách khác - phục vụ ứng dụng tại www.joe.domain.com và chuyển hướng từ joe.domain.com. Khá chắc chắn đó là trong một RFC.


Nếu bạn có nginx xử lý nhiều tên miền đó thì hãy viết một tập lệnh để tạo cấu hình. Đó là ngôn ngữ cấu hình khá đơn giản và bạn thực sự không muốn phân tích cú pháp regex trên mỗi lần tải trang trên máy chủ lưu lượng truy cập cao.
Martin Fjordvald

Về nguyên tắc, có lẽ, nhưng bạn đã định hình nó? Tôi đã có một số trang web tải rất cao bằng cách sử dụng regex cho tất cả các yêu cầu. Nó chăm sóc. Ngoài ra, nhiều môi trường lưu trữ được chia sẻ không có mối quan tâm hiệu suất nghiêm trọng, nhưng có mối quan tâm về quản lý. Cả hai giải pháp có thể hoạt động tốt trong các thông số khác nhau.
Justin Alan Ryan

Nếu bạn có hàng trăm tên miền, hãy sử dụng regrec trong server_name: stackoverflow.com/questions/2498712/nginx-subdomain-rewrite
Alexander Azarov
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.