Статьи

Настройка вашего веб-сайта Azure: изменяемые параметры конфигурации

Некоторое время назад меня встретил клиент, который хотел запустить свой собственный сервер WebDAV (используя www.sabredav.org ) на веб-сайтах Windows Azure . После некоторого тестирования казалось, что этому серверу WebDAV на базе PHP не хватает какой-либо конфигурации на уровне веб-сервера. Некоторые ключевые слова HTTP, необходимые для протокола WebDAV, не были сопоставлены с исполняющей средой PHP, что делало практически невозможным выполнение пользовательской реализации WebDAV на PHP. Если нет какой-либо конфигурации возможно …

Я выпустил простой phpinfo (); на веб-сайтах Windows Azure , просто выводя конфигурацию PHP и все доступные переменные среды на веб-сайтах Windows Azure. Это выявило следующую интересную переменную среды:

Веб-сайты Windows Azure web.config

Ага! Это интересный! Это в основном конфигурация веб-сервера IIS, который вы используете. Он содержит информацию о том, какие разделы конфигурации могут быть переопределены с помощью вашего собственного файла Web.config, а какие нет. Я прочитал файл (кажется, у вас есть доступ к этому пути) и разместил его вывод здесь: applicationhost.config (70.04 кб) . Также есть файл с именем rootweb.config : rootweb.config (36,66 кб)

Перезаписываемые параметры конфигурации

Для простых людей, не заинтересованных в чтении всего applicationhost.config и rootweb.config, вот что вы можете переопределить в своем собственном Web.config. Небольшой отказ от ответственности: это детали реализации и могут быть изменены. Я не Microsoft, поэтому я не могу предсказать, будет ли все это продолжать работать. Используйте свой здравый смысл.

Параметр конфигурации Может быть переопределено в Web.config?
system.webServer.caching да
system.webServer.defaultDocument да
system.webServer.directoryBrowse да
system.webServer.httpErrors да
system.webServer.httpProtocol да
system.webServer.httpRedirect да
system.webServer.security.authorization да
system.webServer.security.requestFiltering да
system.webServer.staticContent да
system.webServer.tracing.traceFailedRequests да
system.webServer.urlCompression да
system.webServer.validation да
system.webServer.rewrite.rules да
system.webServer.rewrite.outboundRules да
system.webServer.rewrite.providers да
system.webServer.rewrite.rewriteMaps да
system.webServer.externalCache.diskCache да
system.webServer.handlers Да, но некоторые заблокированы
system.webServer.modules Да, но некоторые заблокированы

Все остальные, вероятно, не представляется возможным.

Проект Куду

В приложенииhost.config есть несколько интересных вещей (70.04 кб) . Конечно, вы сами решаете, что интересно, так что читайте сами. Вот что мне показалось интересным: проект Kudu там! Проект Куду? Да, механизм с открытым исходным кодом, стоящий за веб-сайтами Windows Azure (что подразумевает, что вы фактически можете разместить свою собственную службу, подобную веб-сайтам Windows Azure).

Если вы посмотрите на архитектурные детали , вот интересное утверждение:

Сайт Kudu работает в той же песочнице, что и реальный сайт. Это имеет некоторые важные последствия.

Во-первых, сайт Kudu не может сделать ничего, что сам сайт не смог бы сделать сам. (…) Но находясь в той же песочнице, что и сайт, он может навредить только самому сайту.

Кроме того, сайт Kudu имеет те же квоты, что и сайт. То есть процессор / оперативная память / диск, используемые службой Kudu, учитываются в квоте сайта. (…)

Подводя итог, можно сказать, что службы Kudu полностью полагаются на модель безопасности среды выполнения веб-сайта Azure, что делает его простым и безопасным.

Доказательство можно найти в applicationhost.config. Если вы посмотрите на определение <sites /> , вы увидите, что два сайта определены. Ваш сайт и сопутствующий сайт с именем ~ 1yoursitename . Первый, конечно, запускает ваш сайт. Последний запускает проект Kudu, который позволяет вам использовать git push и использовать webdeploy.

В файле rootweb.config (36,66 КБ) вы найдете сбалансированную нагрузку веб-сайтов Windows Azure. Здесь определен машинный ключ, который будет одинаковым для всех экземпляров ваших веб-сайтов, что позволит вам делиться состоянием сеанса, формировать файлы cookie аутентификации и т. Д.

Мои PHP HTTP глаголы переопределить

Чтобы исправить отображение глагола PHP HTTP, вот Web.config, который я использовал у клиента, просто удалив и повторно добавив обработчик PHP:

 <?xml version="1.0" encoding="UTF-8"?> 
 <configuration> 
 <system.webServer> 
 <handlers> 
 <remove name="PHP53_via_FastCGI" /> 
 <add name="PHP53_via_FastCGI" path="*.php" 
 verb="GET, PUT, POST, HEAD, OPTIONS, TRACE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK" modules="FastCgiModule" scriptProcessor="D:\Program Files (x86)\PHP\v5.3\php-cgi.exe" 
 resourceType="Either" requireAccess="Script" /> 
 </handlers> 
 </system.webServer> 
 </configuration>