Sử dụng Nginx để máy chủ các trang khác nhau tùy thuộc vào địa chỉ IP / mạng con


8

Vì lý do ghê tởm để đi vào ... Tôi đang sử dụng Nginx làm máy chủ web và muốn nó phục vụ một trang cho người dùng nội bộ (giả sử ngày 10.0.0.0/16) và một trang khác cho người dùng bên ngoài trên bất kỳ địa chỉ IP nào khác.

Ví dụ:

  • PC "nội bộ" có IP 10.0.0.34 được chuyển đến company.com/page.html lấy trang Internal.html

  • PC "bên ngoài" có IP là 8.8.8.8 được chuyển đến company.com/page.html được trang bên ngoài.html


2
Làm rõ; Sử dụng Nginx không phải là ghê gớm, điều tôi cần làm là! Nginx thật tuyệt!
Jon Rhoades

Câu trả lời:


13

Sử dụng mô đun địa lý Nginx . Nó cho phép bạn đặt giá trị của biến dựa trên địa chỉ IP của máy khách. geoChỉ thị phải nằm trong httpphần:

http {
  geo $client {
    default extra;
    10.0.0.0/8 intra;
  }

Bạn có thể sử dụng nó sau này trong các vị trí để tra cứu tập tin

location / {
  try_files $uri.$client $uri = 404;
}

Những phương tiện, Nginx sẽ thiết lập $clientcho một trong hai extrahoặc intradựa trên IP của khách hàng. Hãy giả sử đó là một khách hàng Intranet. Nếu khách hàng yêu cầu page.html, Nginx sẽ tìm kiếm tệp /your/root/page.html.intra. Nếu không có tập tin đó, nó sẽ tìm kiếm /your/root/page.html. Nếu không thể tìm thấy cả hai thứ này, Nginx trả về phản hồi 404 "Không tìm thấy". Thông tin thêm về "try_files" trong tài liệu

Nhân tiện, indexchỉ thị cũng hỗ trợ các biến. Ví dụ

index index.$client.html index.html;

2
Hoạt động tốt - Tôi đã kết thúc việc thực hiện location = / filename & viết lại ^ /filename.$client lần cuối;
Jon Rhoades
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.