Làm cách nào để đặt mục nhập ký tự đại diện vào / etc / hosts?


82

Gần đây tôi muốn trỏ tất cả các miền phụ cho một miền thử nghiệm, giả sử example.com đến localhost. Có cách nào để trỏ tất cả các yêu cầu trên * .example.com đến 127.0.0.1 không


Câu trả lời:


99

Nó xảy ra rằng /etc/hoststệp không hỗ trợ các mục nhập thẻ đại diện.

Bạn sẽ phải sử dụng các dịch vụ khác như dnsmasq. Để bật nó trong dnsmasq, chỉ cần chỉnh sửa dnsmasq.confvà thêm dòng sau:

address=/example.com/127.0.0.1

4
cho mục nhập ký tự đại diện - address = /. example.com/127.0.0.1
vivex

2
@Vivek Nó không bắt buộc
Rahil Wazir

4
Để dnsmasqthiết lập ubuntu, hãy xem cái này .
chanh vắt

5
Đối với thiết lập macosx, passcuriosity.com/2013/dnsmasq-dev-osx khá hữu ích.
aamir

4
rahilwazir, thực ra, đó là nếu bạn không muốn tất cả các miền phụ. # cũng hoạt động như một thẻ đại diện. Cá nhân tôi đang sử dụng `address = / dev # .example.com / 127.0.0.1 để làm cho dev123.example.com, v.v. hoạt động.
Ray Foss

6

Đây là cấu hình cho những người đang cố gắng hoàn thành mục tiêu ban đầu (các ký tự đại diện đều trỏ đến cùng một cơ sở mã - không cài đặt gì, môi trường nhà phát triển tức là, XAMPP)

tệp máy chủ (thêm một mục nhập)

tệp: / etc / hosts (không phải cửa sổ)

127.0.0.1   example.local

Cấu hình httpd.conf (bật vhosts)

tệp: /XAMPP/etc/httpd.conf

# Virtual hosts
Include etc/extra/httpd-vhosts.conf

Cấu hình httpd-vhosts.conf

tệp: XAMPP / etc / extra / httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin admin@example.local
    DocumentRoot "/path_to_XAMPP/htdocs"
    ServerName example.local
    ServerAlias *.example.local
#    SetEnv APP_ENVIRONMENT development
#    ErrorLog "logs/example.local-error_log"
#    CustomLog "logs/example.local-access_log" common
</VirtualHost>

khởi động lại apache

tạo tệp pac:

lưu dưới dạng bất kỳ thứ gì. pac ở bất cứ đâu bạn muốn và sau đó tải tệp trong mạng của trình duyệt> proxy> cài đặt cấu hình tự động (tải lại nếu bạn thay đổi điều này)

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}

Không hoạt động đối với tệp máy chủ trên Windows. Nó sẽ chỉ chấp nhận www.example.com
Andre

1
điều này không hoạt động trên các cửa sổ sử dụng tệp pac trong firefox. Tôi đã thử nghiệm điều này trên nhiều máy windows. tệp hosts chỉ yêu cầu một mục nhập, tệp pac xử lý các tên miền phụ.
Daniel Jordi

1
Câu hỏi ban đầu theo tôi hiểu không phải về apache mà là ở cấp độ mạng, vì vậy tôi nghĩ câu trả lời của bạn không đúng điểm: /
viTropy 20/02/17

cho việc sử dụng các tập tin pac trong internet khám phá xem: campus.barracuda.com/product/websecurityservice/article/WSS/...
Saeed arab sheybani

1
Xin lưu ý rằng khi sử dụng tệp pac để yêu cầu proxy tới máy chủ (ví dụ: localhost), máy chủ web như Apache sẽ sử dụng URL đầy đủ (bao gồm cả giao thức và tên máy chủ) trong biến REQUEST_URI thay vì chỉ thành phần đường dẫn.
JSchirrmacher

4

sử dụng dnsmasq

giả vờ bạn đang sử dụng một bản phân phối dựa trên debian (ubuntu, mint ..), hãy kiểm tra xem nó có được cài đặt với

(sudo) systemctl status dnsmasq

Nếu nó chỉ bị tắt, hãy bắt đầu nó với

(sudo) systemctl start dnsmasq

Nếu bạn phải cài đặt nó, hãy viết

(sudo) apt-get install dnsmasq

Để xác định miền cần giải quyết, hãy chỉnh sửa /etc/dnsmasq.confnhư thế này

address=/example.com/127.0.0.1

để giải quyết * .example.com

! Bạn cần tải lại dnsmasq để các thay đổi có hiệu lực!

systemctl reload dnsmasq
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.