Apache PHP ile proxy kimlik doğrulaması ters

1 Cevap php

Ben iki apache sunucuları kurdunuz. Bir diğer bir güvenlik duvarının arkasındaysa, kamu bakmaktadır. Güvenlik duvarının arkasında bir içerik (vids, resim, vb) kadar hizmet için kullanılır. Bir ters proxy kurdum, böylece http://mysite.com/content/ aslında benim duvarı içindeki sunucuya gitmek için herhangi bir istekleri. Benim serverfault bak question.

Sitem kullanıcıların kimliğini doğrulamak için PHP ve MySQL kullanır. Apache hemen iç sunucuya istek gönderir çünkü kimlik / içerik dizininde şey üzerinde çalışmaz. İdeal Benim kamu bakan sunucuda kullanıcıların kimliğini doğrulamak ister ve güvenlik duvarı içinde içerik sunucudan onları içerik vermek istiyorum.

Yalnızca kimliği doğrulanmış kullanıcılar / içerik dizinine erişim sağlamak için bir yolu var mı?

1 Cevap

While this answer may not represent a "best practice", it does work nicely

Kullanıcıların kendi hesabına upload özel dosyaları ve görüntüleri hizmet etmek - Biz bir türlü "dosyasunucusu" olarak apache ile bir arka uç sunucusu kullanabilirsiniz. İşte nasıl işliyor:

Istediğiniz ancak URL'leri işlemek için Kurulum mod_rewrite. Örneğin:

RewriteRule /content/(.*)   /ServeContent.php?FileName=$1

Komut ServeContent.php aşağıdakileri yapacaktır:

1. Validate input

2. Authenticate user based on cookie or session data

3. Make a URL with $_GET['FileName'] and the IP of the backend server
   http://192.168.1.30/content/somefile.jpg

4. Set appropriate headers for the file type
   header('Content-type: image/jpeg')

5. readfile($URL)

Bu yaklaşım fopen-wrapper PHP etkin gerektirir. readfile bellekte içeriğini saklamak olmaz, bu nedenle bu gerçekten fazla bellek kullanmaz. Temel sakıncalarından biri (uzun bir süre olabilir) istek süresince bir apache / php işlemini yapacak olmasıdır. Eğer yüksek trafik site çalıştıran sürece ama gerçekçi, probabally bir sorun olmaz.

Eğer, orada büyük olasılıkla daha iyi çözümler vardır. Ama bu çeşitli uygulamalar üzerinde büyük dosyalar bizim için çok etkili çalıştı.