反向代理+ IIS + Docker

我有两个服务在群中运行(我将称它们为A和B),副本为1,这意味着每个服务的一个容器。

服务A具有调用服务B中的另一个web应用程序(api)的web应用程序(UI)。

服务A在8082上暴露,服务B在8081上暴露。

但是,由于端口的差异,CORS将不允许A调用B(即使它们在群集中的相同url上可用),但是我将不得不实现某种反向代理来实现此function。

我的想法是与A现有的UI应用程序中有一个虚拟Web API,并将urlReWrite规则添加到虚拟API,以便从UI应用程序到服务A中的虚拟Web应用程序的请求将被redirect到服务B中的实际一个。

无论什么原因,这是行不通的。 我只是得到404错误。 有人可以帮我弄这个吗?

我也发布了下面的docker文件的内容服务A有urlRewrite写入它。

# escape=` FROM microsoft/aspnet SHELL ["powershell", "-command"] # Install urlRewrite RUN Invoke-WebRequest http://download.microsoft.com/download/E/9/8/E9849D6A-020E-47E4-9FD0-A023E99B54EB/requestRouter_amd64.msi -UseBasicParsing -OutFile C:/requestrouter.msi; ` Start-Process msiexec -ArgumentList '/i C:\requestrouter.msi /qn' -Wait; rm C:\requestrouter.msi # Install ARR RUN Invoke-WebRequest http://download.microsoft.com/download/C/9/E/C9E8180D-4E51-40A6-A9BF-776990D8BCA9/rewrite_amd64.msi -UseBasicParsing -OutFile C:/rewrite.msi; ` Start-Process msiexec -ArgumentList '/i C:\rewrite.msi /qn' -Wait; rm C:\rewrite.msi # Enable ARR proxy RUN Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Name 'enabled' -Filter 'system.webServer/proxy' -Value 'True' # Configure website EXPOSE 8082 RUN Set-WebBinding -Name 'Default Web Site' ` -BindingInformation '*:80:' ` -PropertyName Port -Value 8082; ` md C:\inetpub\wwwroot\Application; ` md C:\inetpub\wwwroot\webapi; ` md c:\transformedsettings; ` New-WebApplication -Name 'UIApplication' ` -Site 'Default Web Site' ` -PhysicalPath 'C:\inetpub\wwwroot\Application' ` -ApplicationPool '.NET v4.5'; ` New-WebApplication -Name 'webapi' ` -Site 'Default Web Site' ` -PhysicalPath 'C:\inetpub\wwwroot\webapi' ` -ApplicationPool '.NET v4.5'; RUN Add-WebConfigurationProperty -PSPath 'IIS:\Sites\Default Web Site\webapi' -filter "system.webServer/rewrite/rules" -name '.' -value @{name='umrp'; patterSyntax='Regular Expressions'; stopProcessing='False'}; ` Set-WebConfigurationProperty -PSPath 'IIS:\Sites\Default Web Site\webapi' -filter "system.webServer/rewrite/rules/rule[@name='umrp']/match" -name 'url' -value '(.*)'; ` Set-WebConfigurationProperty -PSPath 'IIS:\Sites\Default Web Site\webapi' -filter "system.webServer/rewrite/rules/rule[@name='umrp']/action" -name 'type' -value 'Rewrite'; ` Set-WebConfigurationProperty -PSPath 'IIS:\Sites\Default Web Site\webapi' -filter "system.webServer/rewrite/rules/rule[@name='umrp']/action" -name 'url' -value 'http://(manager nodes ip):8081/{R:1}' # The final instruction copies the site you published earlier into the container. COPY ./Xpo.LastMile.Portal/bin/Release/PublishOutput C:/inetpub/wwwroot/Application COPY ./InitializeContainer.ps1 c:/ COPY ./transformedsettings c:/transformedsettings COPY ./Xpo.LastMile.Portal/angular2 C:/inetpub/wwwroot/Application/angular2 COPY ./Xpo.LastMile.Portal/node_modules C:/inetpub/wwwroot/Application/node_modules COPY ./Default.html C:/inetpub/wwwroot/webapi ENTRYPOINT powershell c:\InitializeContainer