IIS 7.5 URL переписывает и 404 не найденный

Я пытаюсь установить обратный прокси с помощью IIS для проксирования запроса на порте 80 к локальной виртуальной машине на порте 8080. Правило перезаписи было установкой с помощью IIS GUI "Обратное" правило Прокси. Однако это работает очень странно:

Если существует файл/папка в веб-папке (физический путь), то обратная работа прокси. Иначе это бросает 404 ошибки.

Например, для запроса на "http://example.com/myfile", если существует имя файла "myapp" в веб-папке затем, это переписывается в "http://example.com:8080/myfile" правильно. С другой стороны, если нет никакого файла "myfile" локально, то я получаю 404 ошибки. Именно, как будто существует что-то, проверяют существование локального файла (и бросают 404), прежде чем URL перепишет правила, обрабатываются.

Я пробую, отключают некоторые дескрипторы, переупорядочивают модули, и ни один, кажется, не работает :(

Рабочий IIS 7.5 на Windows Server 2008 R2

0
задан 28 October 2014 в 12:37
4 ответа

Хорошо, наконец-то он заработал путем удаления IsapiFilterModule и IsapiModule с сайта.

0
ответ дан 5 December 2019 в 13:04

Если у вас есть приложение ASP.NET MVC и вы получаете ошибку 404, эту проблему можно решить, добавив путь игнорирования к маршрутам.

routes.Ignore («путь для игнорирования»);

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.Ignore("api/controllerNmae/actionName");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}
0
ответ дан 5 December 2019 в 13:04

Мне нужен был только обратный прокси для одного сервера приложений, работающего локально. Я получал 404, но затем добавил в свой web.config в физическом каталоге сайта, и это сработало. Мой файл web.config выглядит так

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpRedirect enabled="false" />
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://localhost:8153/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
0
ответ дан 5 December 2019 в 13:04

Он работал для меня, сняв runAllManagedModulesForAllRequests="true" из элемента модулей в конфигурации. Я думаю, что это приводит к тому, что все модули уровня сайтов запускаются первыми, чем достигают модуля UrlRewrite.

.
0
ответ дан 5 December 2019 в 13:04

Теги

Похожие вопросы