
동일한 서버에서 IIS와 Apache를 작동하는 데 문제가 있습니다. 특히, Apache가 리디렉션하는 경우 웹 사이트 도메인이 대상 도메인으로 대체되지 않습니다. 예는 다음과 같습니다. https://s3.amazonaws.com/company-documentation/Help/Product/index.html 대신 다음으로 리디렉션됩니다. https://website.company.com/company-documentation/Help/Product/index.html
현재 IIS가 모든 트래픽을 아파치로 리디렉션하고 URL을 다시 작성하여 비표준 포트 번호를 숨기도록 설정했습니다. 다음은 내가 설정한 IIS 재작성 규칙과 Apache htaccess 리디렉션입니다.
Apache의 htaccess 루트 폴더 리디렉션 규칙은 다음과 같습니다.
# Turn mod_rewrite on
RewriteEngine On
RewriteRule "^Documentation/Product/(.*)$" "https://s3.amazonaws.com/company-documentation/Help/Product/$1" [L,NC]
이것은 IIS web.config입니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://website.company.com:8081/{R:1}" />
<serverVariables>
<set name="HTTP_ACCEPT_ENCODING" value="" />
</serverVariables>
</rule>
</rules>
<outboundRules>
<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
<match filterByTags="A, Form, Img" pattern="^http(s)?://website.company.com:8081/(.*)" />
<action type="Rewrite" value="http{R:1}://website.company.com/{R:2}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
Apache htaccess 재작성은 Apache만 웹 서버로 설치된 현재 프로덕션 서버에서 제대로 작동합니다. CRM과 웹 사이트를 모두 제공하려면 새 서버의 동일한 서버에 IIS와 Apache가 모두 있어야 합니다. 이 작업을 수행하는 방법에 대한 제안이 있습니까?
편집하다: CRM 요청을 위해 Apache 서버를 IIS로 리디렉션하는 것이 작동하는지 잘 모르겠습니다. 서버에 설치된 ADFS가 포트 80 및 443을 사용하기 때문입니다. 포트 80 및 443은 Apache를 HTTP 및 HTTPS 요청에 대한 기본 요청 처리기로 만드는 데 사용해야 합니다. .
답변1
해결책은 ARR 프록시 설정으로 이동하여 "응답 헤더에서 호스트 역방향 재작성"을 선택 취소하는 것입니다. 원천:https://forums.iis.net/t/1176725.aspx