Решение Herer:
/**
* Tests two data structures for equality
* @param {object} x
* @param {object} y
* @returns {boolean}
*/
var equal = function(x, y) {
if (typeof x !== typeof y) return false;
if (x instanceof Array && y instanceof Array && x.length !== y.length) return false;
if (typeof x === 'object') {
for (var p in x) if (x.hasOwnProperty(p)) {
if (typeof x[p] === 'function' && typeof y[p] === 'function') continue;
if (x[p] instanceof Array && y[p] instanceof Array && x[p].length !== y[p].length) return false;
if (typeof x[p] !== typeof y[p]) return false;
if (typeof x[p] === 'object' && typeof y[p] === 'object') { if (!equal(x[p], y[p])) return false; } else
if (x[p] !== y[p]) return false;
}
} else return x === y;
return true;
};
Работает с любой вложенной структурой данных и, очевидно, игнорирует методы объектов. Даже не думайте о расширении Object.prototype с помощью этого метода, когда я это пробовал один раз, jQuery сломался;)
Для большинства массивов он все же быстрее, чем большинство решений для сериализации. Вероятно, это самый быстрый метод сравнения для массивов записей объектов.
Для обоих серверов невозможно послушать на том же порте в том же IP-адресе: так как единственный сокет может только быть открыт единственным процессом, только первый сервер, настроенный для определенного IP/комбинации портов, успешно свяжет, и второй перестанет работать.
Вам таким образом будет нужно обходное решение для достижения того, что Вы хотите. Самый легкий должен, вероятно, выполнить Apache на Вашем основном IP/комбинации портов и иметь его запросы маршрута для IIS (который должен быть настроен для различного IP и/или порта) к нему с помощью mod_rewrite.
Имеют в виду, что альтернативный IP и порт IIS работают, должно быть достижимым клиентам, соединяющимся с Вашим сервером: если Вы только имеете единственный IP-адрес в наличии, необходимо заботиться для выбора порта IIS, который обычно не блокируется брандмауэрами (8080, мог бы быть хороший вариант, или 443, даже при том, что Вы выполняете регулярный HTTP и не SSL)
P.S. Кроме того, обратите внимание на то, что действительно необходимо изменить конфигурацию значения по умолчанию IIS с помощью httpcfg, прежде чем это позволит другим серверам работать на порте 80 на любом IP-адресе на том же сервере: см. ответ Micky McQuade для процедуры, чтобы сделать это...
Я нашел это сообщение , который предложил иметь два отдельных IP-адреса так, чтобы оба могли послушать на порте 80.
был протест, что необходимо было внести изменение в IIS из-за объединения в пул сокета. Вот инструкции на основе ссылки выше:
httpcfg.exe
утилита от области инструментов поддержки на Win2003 CD. net stop http /y
httpcfg set iplisten -i 192.168.1.253
httpcfg query iplisten
(Дюйм/с перечислил, единственные IP-адреса, что IIS будет слушать на и никто другой.) net start w3svc
Вам нужно, по крайней мере, mod_proxy и mod_proxy_http, который оба - часть распределения (все же не каждый раз созданный автоматически). Тогда можно посмотреть здесь: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
Самая Простая конфигурация в virtualhost контексте:
ProxyPass /winapp http://127.0.0.1:8080/somedir/
ProxyPassReverse /winapp http://127.0.0.1:8080/somedir/
(В зависимости от Вашего веб-приложения, фактическая конфигурация могла бы стать более сложной.), Который прозрачно перенаправляет каждый запрос на пути winapp/к Windows Server и возвращает получающийся вывод клиенту.
Внимание: Заботьтесь о ссылках на поставленных страницах: они не переписываются, таким образом, можно сохранить себя стычка lotsa при общем использовании относительных ссылок в приложении, как
<a href=../pics/mypic.jpg">
вместо обычного кошмара интеграции каждой ссылки, являющейся абсолютным:
<a href="http://myinternalhostname/somedir/crappydesign.jpg">
ПОСЛЕДНИЙ ПЛОХ ПОЧТИ КАЖДЫЙ РАЗ!
Для перезаписи ссылок на страницах существует mod_proxy_html (чтобы не перепутать с mod_proxy_http!), но это - другая история и жестокая также.
Различные IP-адреса любых двух (как рекомендуемый) или один веб-сервер являются проксированием реверса другой (который слушает на порте <> 80).
, Например: Apache слушает на порте 80, IIS на порте 8080. Каждый запрос HTTP переходит к Apache сначала (конечно). Можно тогда решить передать каждый запрос к детали (названный виртуальным) домен или каждый запрос, который содержит конкретный каталог (например, http://www.example.com/winapp/ ) к IIS.
Преимущество этого понятия состоит в том, что у Вас есть только один сервер, слушая общественность вместо два, Вы более гибки как с двумя отличными серверами.
Недостатки: некоторые веб-приложения являются разработанным crappily и реальная боль в заднице для интеграции в инфраструктуру обратную прокси. Рабочее веб-приложение IIS зависит от рабочего Apache, таким образом, у нас есть некоторые взаимозависимости.
Необходимо будет использовать различные IP-адреса. Сервер, или Apache или IIS, захватывает трафик на основе IP и Порта, который когда-либо они обязаны слушать. Как только это начинает слушать, тогда это использует заголовки, такие как имя сервера, чтобы отфильтровать и определить, к какому сайту получают доступ. Вы не можете сделать этого, будет, просто изменяя имя сервера в запросе