Điều khiển truy cập proxy ngược của Apache


8

Tôi có một proxy ngược Apache hiện đang ủy quyền ngược cho một vài trang web. Tuy nhiên, bây giờ tôi sẽ thêm một trang web mới (hãy gọi nó là newsite.com) mà chỉ một số IP nhất định có thể truy cập được. Đây có phải là có thể sử dụng Apache như một proxy ngược?

Tôi sử dụng Virtualhosts cho các trang web đang được ủy quyền. Tôi đã thử sử dụng các lệnh Cho phép / Từ chối kết hợp với các câu lệnh Vị trí. Ví dụ:

<VirtualHost *:80>  
Servername newsite.com   
<Location http://newsite.com>
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Location>
<IfModule rewrite_module>
 RewriteRule ^/$ http://newsite.internal.com [proxy]
</IfModule>

Tôi cũng đã thử cấu hình allow / deny specic Daily cho trang web trong các chỉ thị Proxy, chẳng hạn

<Proxy http://newsite.com/>
  Order deny,allow
  Deny from all
  Allow from x.x.x.x
</Proxy>

Tôi vẫn có định nghĩa này cho phần còn lại của các trang web proxy.

<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>

Không có vấn đề gì tôi làm nó dường như có thể truy cập từ bất cứ nơi nào. Đây có phải là do định nghĩa cho tất cả các trang web proxy khác. Có một lệnh mà nó áp dụng các chỉ thị Proxy. Tôi đã có một trang mới cả trước và sau * một, và cả trong câu lệnh Virtualhost.

Câu trả lời:


2

Bạn đang sử dụng ServerNameServerAlias để khớp với newsite.com.

Bạn KHÔNG nên sử dụng cho cấu hình proxy ngược của lệnh:

<Proxy whatever>

Bạn nên sử dụng:

Đối với apache 2.2:

<Location />
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Location>

Đối với apache 2.4:

<Location />
   <RequireAny>
       Require             ip x.x.x.x/255.255.255.0
       Require ...
   </RequireAny>
</Location>

Sau khi thực hiện Authz, bạn chỉ cần thực hiện ProxyPass và ProxyPassReverse (đối với các chuyển hướng 302.301):

ProxyPass /  http://newsite.com/
ProxyPassReverse /  http://newsite.com/

Hãy nhớ rằng với điều này, bạn cần thêm newsite.com vào / etc / hosts hoặc dns sẽ giải quyết máy chủ trong url. Bạn cũng có thể chỉ sử dụng địa chỉ IP nhưng bạn nên hướng dẫn máy chủ httpd bảo toàn tiêu đề "Máy chủ:" với:

ProxyPreserveHost On

1

đã có một vấn đề tương tự ngày hôm nay; Có liên quan đến cách thực hiện khớp ký tự đại diện, tôi nghĩ rằng nó sử dụng URL đầy đủ: trong trường hợp của tôi, tôi đã có

<Proxy /jira*>
  Order allow,deny
  Deny from all
</Proxy>
ProxyPass /jira https://myhost.com

và điều này đã không làm việc. Trang web có thể truy cập từ bất cứ đâu. Tôi đã thử một vài thứ và tìm thấy một phiên bản hoạt động:

<Proxy *jira*>

Vì vậy, trong trường hợp của bạn hãy thử với

<Proxy http://newsite.com*>

để đảm bảo apache khớp với url đó.


0
<VirtualHost *:80>
    Servername newsite.com

    <Proxy *>
            Order Deny,Allow
            Deny from all
            Allow from x.x.x.x
    </Proxy>

    ProxyPass /  http://newsite.com/
    ProxyPassReverse /  http://newsite.com/

</VirtualHost>

1
Điều này làm gì, và tại sao nó làm điều đó?
sysadmin1138

Đó là một proxy ngược chỉ có thể truy cập bởi một IP nhất định (được xác định bằng cách thay thế 'x' trong Cho phép từ xxxx ).
dr0i
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.