Apache membalikkan kontrol akses proxy

8

Saya memiliki proxy reverse Apache yang saat ini proxy reverse untuk beberapa situs. Namun saya sekarang akan menambahkan situs baru (sebut saja newsite.com) yang seharusnya hanya dapat diakses oleh IP tertentu. Apakah ini bisa dilakukan menggunakan Apache sebagai proxy terbalik?

Saya menggunakan VirtualHost untuk situs-situs yang sedang di proksi. Saya telah mencoba menggunakan arahan Allow / Deny dalam kombinasi dengan pernyataan Lokasi. Sebagai contoh:

<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>

Saya juga telah mencoba mengkonfigurasi allow / deny khusus untuk situs dalam arahan Proxy, misalnya

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

Namun saya masih memiliki definisi ini untuk sisa situs yang diproksi.

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

Apa pun yang saya lakukan tampaknya dapat diakses dari mana saja. Apakah ini karena definisi untuk semua situs proxy lainnya. Apakah ada perintah yang menerapkan arahan Proxy. Saya telah memiliki situs baru baik sebelum dan sesudah * satu, dan juga dalam pernyataan VirtualHost.


sumber

Jawaban:

2

Anda menggunakan ServerName dan ServerAlias untuk mencocokkan newsite.com.

Anda TIDAK boleh menggunakan direktif proxy konfigurasi sebaliknya:

<Proxy whatever>

Kamu harus menggunakan:

Untuk apache 2.2:

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

Untuk apache 2.4:

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

Setelah melakukan Authz, Anda cukup melakukan ProxyPass, dan ProxyPassReverse (untuk pengalihan 302.301):

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

Ingatlah bahwa dengan ini Anda perlu menambahkan newsite.com ke / etc / hosts Anda atau bahwa dns harus menyelesaikan host di url. Anda juga dapat menggunakan alamat IP saja tetapi Anda harus menginstruksikan server httpd yang Mempertahankan header "Host:" dengan:

ProxyPreserveHost On
FarDarkMist
sumber
1

memiliki masalah yang sama hari ini; Terkait dengan bagaimana pencocokan wildcard dilakukan, saya pikir itu menggunakan URL lengkap: dalam kasus saya saya punya

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

dan ini tidak berhasil. Situs dapat diakses dari mana saja. Saya mencoba beberapa hal dan menemukan versi yang berfungsi:

<Proxy *jira*>

Jadi dalam kasus Anda coba

<Proxy http://newsite.com*>

untuk memastikan apache cocok dengan url itu.

stijn
sumber
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>
dr0i
sumber
1
Apa yang dilakukan ini, dan mengapa itu terjadi?
sysadmin1138
Itu adalah proxy terbalik yang hanya dapat diakses oleh IP tertentu (harus ditentukan dengan mengganti 'x' pada Allow from xxxx ).
dr0i