РЕШЕНО: Идея в том, что если посетитель приехал из Китая, он должен пройти базовую аутентификацию. Если у вас есть другой IP-адрес, вы можете без проблем посещать сайт (включая прокси).
//1400 rules....
SetEnvIf Remote_Addr 222.249.128.0/19 china
SetEnvIf Remote_Addr 222.249.160.0/20 china
SetEnvIf Remote_Addr 222.249.176.0/20 china
AuthType Basic
AuthName "Restricted"
AuthUserFile /www/passwd/users
Require valid-user
Order allow,deny
Allow from All
Deny from env=china
Satisfy any
Просто добавьте «разрешить от myiprange» или «разрешить от myinternalnetwork.com». «Удовлетворить любое» потребует либо действительного пользователя, либо разрешения от.
Это код, который я использую, чтобы разрешить всем пользователям, запретить пользователям из Китая и запросить пароль для тех:
AuthType Basic
AuthName "Restricted"
AuthUserFile /home/.htpasswds/.htpasswd
Require valid-user
Order Allow,Deny
Allow from all
deny from 58.14.0.0/15
....
deny from 222.249.192.0/18
satisfy any
Обычно конфигурация по умолчанию имеет неограниченный доступ для всех.
<Directory "/home/web/htdocs">
Order allow,deny
Allow from all
</Directory>
Затем вы должны принудительно выполнить аутентификацию для своей зоны с ограниченным доступом, запретив все, а затем разрешив только эти подсети, а затем любые требования к тому, как они на самом деле будут аутентифицироваться. Удовлетворять всем используется для страхования обе необходимы политики доступа.
<Directory "/home/web/htdocs/restricted">
Order Deny,Allow
Deny from all
Allow from 58.240.0.0/15
Allow from 58.242.0.0/15
Require valid-user
Satisfy all
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/web/.htpasswds/.htpasswd
Require valid-user
</Directory>
Предостережение!
Каждый раз, когда мне кажется, что я понимаю правила работы аутентификации, мне приходится постоянно возиться с конфигурацией, пока не увижу некоторые нюансы. Используйте это только как отправную точку. Перечитайте документацию apache, в частности, по mod_auth и mod_access, уделяя особое внимание директиве Order. В этом ваш ответ.
Надеюсь, это поможет, и, пожалуйста, опубликуйте свой рабочий пример, если он не соответствует этому, так как это довольно хороший рецепт для поваренной книги apache.
--редактировать--
Тестирование вышеизложенного показывает, что зона с ограниченным доступом запрещена для всех, кроме тех, кто пользуется IP-адресом и должен обеспечивать аутентификацию.
Из вашего вопроса неясно, нужен ли пользователям с других IP-адресов неограниченный доступ к этой «ограниченной зоне» или они просто запрещены?